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']);

    }
}