Сбой задания Laravel при использовании области действия модели - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть модель с областью применения

public function scopeWithSets($query)
{
    return $query->with([
        'games.playerA.user',
        'games.playerB.user',
        'games.sets' => function ($relatedSets) {
            /**
             * @var \Illuminate\Database\Eloquent\Builder $relatedSets
             */
            $relatedSets->where('points_a', '>', 0)->orWhere('points_b', '>', 0);
        },
        'games' => function ($relatedGames) {
            /**
             * @var \Illuminate\Database\Eloquent\Builder $relatedGames
             */
            $relatedGames->whereNotNull('player_a_id')->orWhereNotNull('player_b_id');
        }]);
}

После экземпляра класса внутри конструкции я получаю некоторые данные из БД с этой областью действия

/**
 * @param GameSerie $gameSerie
 * @see GameSerie::scopeWithSets()
 */
public function __construct(GameSerie $gameSerie)
{
    $this->gameSerie = $gameSerie;

    $gameSerieData = GameSerie::select([
        'game_series.id',
        'team_a_id',
        'team_b_id',
        'championship_id',
        'count_wins_a',
        'count_wins_b'
    ])->where('id', $gameSerie->id)->withSets()->first();

    $this->data = $this->createStatisticCollection($gameSerieData);
}

Если я сделаю это с Linkvel Tinker или через API, все хорошо.

Мне пришлось сделать это с очередью, но после отправки работы моя работа не удалась. Когда я посмотрел на laravel.log, я увидел, что

[2019-04-03 08:46:31] local.ERROR: Call to undefined method Illuminate\Database\Eloquent\Builder::withSets() {"exception":"[object] (BadMethodCallException(code: 0): Call to undefined method Illuminate\\Database\\Eloquent\\Builder::withSets() at /home/vagrant/code/fntr/vendor/laravel/framework/src/Illuminate/Support/Traits/ForwardsCalls.php:50)

Я использую Redis для очереди.

...