У меня есть модель с областью применения
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 для очереди.