Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 Re: Laravel 6/7/8/9/10 » Как сделать выборку из таблиц многие ко многим? » 21.04.2020 18:59:21

Этот запрос выводит турниры со статусом 1, на которые записался пользователь.

$userRegisteredTo = Tournament::whereHas('users', function($query){
                $query->where('user_id', Auth::id());
            })->where('status', '1')->get();

Можно ли это считать жадной загрузкой?

#2 Re: Laravel 6/7/8/9/10 » Как сделать выборку из таблиц многие ко многим? » 14.04.2020 20:44:08

Здравствуйте!

Подскажите почему не работает выборка данных для связи многие ко многим.
Есть турниры, модель Tournament, и игроки, модель User.
Модели друг с другом связаны.

public function users(){
    	return $this->belongsToMany('App\User')->withPivot('tournament_id', 'user_id')->withTimestamps();
    }
public function tournaments(){
        return $this->belongsToMany('App\Tournament')->withPivot('tournament_id', 'user_id')->withTimestamps();
    }

Я хочу получить только турниры, у которых статус = 1 и на которые записался  пользователь.

Для этого использую нетерпеливую загрузку и ограничения нетерпеливой загрузки, как описано здесь - Нетерпеливая загрузка

В контроллере указано.

$viewerId = Auth::id();

$tournamentsForShow = Tournament::whereStatus(1)->with(['users' => function ($query){
                               $query->where('user_id', '=', '$viewerId');
                               }])->get();
       
foreach ($tournamentsForShow as $tournament) {
                echo $tournament->pivot->user_id;
}

получаю ошибку - Trying to get property 'user_id' of non-object

Подвал раздела