Php local.ERROR:App\Measure::getData()的返回值必须是illumb\Support\Collection的实例,无返回值
我有一个功能:Php local.ERROR:App\Measure::getData()的返回值必须是illumb\Support\Collection的实例,无返回值,php,laravel,Php,Laravel,我有一个功能: public static function getData($operationId = null, $meterId = null, $consoProd = null, $dateIni = null, $dateEnd = null) { // get the first date $measures = Measure::where('source', '1')->orderBy('time', 'asc');
public static function getData($operationId = null, $meterId = null, $consoProd = null, $dateIni = null, $dateEnd = null)
{
// get the first date
$measures = Measure::where('source', '1')->orderBy('time', 'asc');
if ($operationId != null) $measures->where('operation_id', $operationId);
if ($meterId != null) $measures->where('meter_id', $meterId);
if ($consoProd != null) $measures->where('conso_prod', $consoProd);
if ($dateIni != null) $measures->where('time', '>', $dateIni);
if ($dateEnd != null) $measures->where('time', '<=', $dateEnd);
$measures = $measures->get()->groupBy(['operation_id', 'meter_id', 'conso_prod']);
return $measures;
}
我还尝试重新启动php artisan serve
但我的问题依然存在
我该怎么办
我使用PHP7.4/Laravel7
以下是完整日志:
[2020-08-28 07:13:17] local.ERROR: Return value of App\Measure::getData() must be an instance of Illuminate\Support\Collection, none returned {"exception":"[object] (TypeError(code: 0): Return value of App\\Measure::getData() must be an instance of Illuminate\\Support\\Collection, none returned at /home/julien/Code/acc/app/Measure.php:41)
[stacktrace]
#0 /home/julien/Code/acc/app/Jobs/ScanMissingData2.php(38): App\\Measure::getData()
#1 [internal function]: App\\Jobs\\ScanMissingData2->handle()
#2 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): call_user_func_array()
#3 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/Util.php(37): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#4 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\\Container\\Util::unwrapIfClosure()
#5 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(39): Illuminate\\Container\\BoundMethod::callBoundMethod()
#6 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/Container.php(596): Illuminate\\Container\\BoundMethod::call()
#7 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(94): Illuminate\\Container\\Container->call()
#8 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}()
#9 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#10 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\Pipeline\\Pipeline->then()
#11 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(83): Illuminate\\Bus\\Dispatcher->dispatchNow()
#12 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(128): Illuminate\\Queue\\CallQueuedHandler->Illuminate\\Queue\\{closure}()
#13 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(103): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
#14 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(85): Illuminate\\Pipeline\\Pipeline->then()
#15 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(59): Illuminate\\Queue\\CallQueuedHandler->dispatchThroughMiddleware()
#16 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(98): Illuminate\\Queue\\CallQueuedHandler->call()
#17 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(356): Illuminate\\Queue\\Jobs\\Job->fire()
#18 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(306): Illuminate\\Queue\\Worker->process()
#19 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(132): Illuminate\\Queue\\Worker->runJob()
#20 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(112): Illuminate\\Queue\\Worker->daemon()
#21 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(96): Illuminate\\Queue\\Console\\WorkCommand->runWorker()
#22 /home/julien/Code/acc/vendor/laravel/horizon/src/Console/WorkCommand.php(46): Illuminate\\Queue\\Console\\WorkCommand->handle()
#23 [internal function]: Laravel\\Horizon\\Console\\WorkCommand->handle()
#24 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(37): call_user_func_array()
#25 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/Util.php(37): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
#26 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(95): Illuminate\\Container\\Util::unwrapIfClosure()
#27 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(39): Illuminate\\Container\\BoundMethod::callBoundMethod()
#28 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Container/Container.php(596): Illuminate\\Container\\BoundMethod::call()
#29 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Console/Command.php(134): Illuminate\\Container\\Container->call()
#30 /home/julien/Code/acc/vendor/symfony/console/Command/Command.php(258): Illuminate\\Console\\Command->execute()
#31 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Console/Command.php(121): Symfony\\Component\\Console\\Command\\Command->run()
#32 /home/julien/Code/acc/vendor/symfony/console/Application.php(911): Illuminate\\Console\\Command->run()
#33 /home/julien/Code/acc/vendor/symfony/console/Application.php(264): Symfony\\Component\\Console\\Application->doRunCommand()
#34 /home/julien/Code/acc/vendor/symfony/console/Application.php(140): Symfony\\Component\\Console\\Application->doRun()
#35 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Console/Application.php(93): Symfony\\Component\\Console\\Application->run()
#36 /home/julien/Code/acc/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(129): Illuminate\\Console\\Application->run()
#37 /home/julien/Code/acc/artisan(37): Illuminate\\Foundation\\Console\\Kernel->handle()
#38 {main}
"}
编辑:
这是ScanMissingData2->handle()
和app/Measure.php
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class Measure extends Model
{
protected $table = 'measures';
protected $casts = [
'time' => 'datetime'
];
public $timestamps = [
"time"
];
public function meter()
{
return $this->belongsTo('App\Meter', 'meter_id', 'prm');
}
public function operation()
{
return $this->belongsTo('App\Operation', 'operation_id', 'name');
}
public static function getData($operationId = null, $meterId = null, $consoProd = null, $dateIni = null, $dateEnd = null) // removed :Collection
{
// get the first date
$measures = Measure::where('source', 'Pamela')->orderBy('time', 'asc');
if ($operationId != null) $measures->where('operation_id', $operationId);
if ($meterId != null) $measures->where('meter_id', $meterId);
if ($consoProd != null) $measures->where('conso_prod', $consoProd);
if ($dateIni != null) $measures->where('time', '>', $dateIni);
if ($dateEnd != null) $measures->where('time', '<=', $dateEnd);
return $measures->get()->groupBy(['operation_id', 'meter_id', 'conso_prod']);
}
}
该特定错误(none returned
)表示您根本没有从函数中返回。如果这是删除集合
返回类型提示之前和之后的错误,您能否确认行号(/home/julien/code/acc/app/Measure.php:41
)在您希望运行的函数中?是,我在同一个函数中仔细检查了这个函数。可能值得发布app/Measure.php
文件的全部内容,以及如何在app\\Jobs\\ScanMissingData2->handle()
中调用getData()
。我加的。谢谢@Juliatzin。不幸的是,我真的看不到任何会导致这个错误的东西。我已经复制了应用程序的这一部分,但没有出现错误。
$operationId = null;
$meterId = null;
$operations = Measure::getData($operationId, $meterId, null, null, null);
foreach ($operations as $operationName => $operation) {
foreach ($operation as $cp => $consoProd) {
foreach ($consoProd as $prm => $meter) {
try {
$missingData = MissingData::makeMissingData($meter);
} catch (\Exception $e) {
}
if ($missingData != null) {
try {
factory(MissingData::class)->create($missingData);
} catch (QueryException $e) {
// Do nothing, just don't add it once more
}
}
}
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\DB;
class Measure extends Model
{
protected $table = 'measures';
protected $casts = [
'time' => 'datetime'
];
public $timestamps = [
"time"
];
public function meter()
{
return $this->belongsTo('App\Meter', 'meter_id', 'prm');
}
public function operation()
{
return $this->belongsTo('App\Operation', 'operation_id', 'name');
}
public static function getData($operationId = null, $meterId = null, $consoProd = null, $dateIni = null, $dateEnd = null) // removed :Collection
{
// get the first date
$measures = Measure::where('source', 'Pamela')->orderBy('time', 'asc');
if ($operationId != null) $measures->where('operation_id', $operationId);
if ($meterId != null) $measures->where('meter_id', $meterId);
if ($consoProd != null) $measures->where('conso_prod', $consoProd);
if ($dateIni != null) $measures->where('time', '>', $dateIni);
if ($dateEnd != null) $measures->where('time', '<=', $dateEnd);
return $measures->get()->groupBy(['operation_id', 'meter_id', 'conso_prod']);
}
}