belongsToMany не работает

Рейтинг: 0Ответов: 1Опубликовано: 25.01.2023

У меня есть 3 таблицы

videos (id)
video_user (user_id, video_id)
users (id)

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


Я уже попытался это сделать таким образом:

User.php (Модель)

public function videos() {
    return $this->belongsToMany(Video::class);
}

Video.php (Модель)

public function users() {
    return $this->belongsToMany(User::class);
}

Но этот вариант ничего не возвращает

Ответы

▲ 0Принят

Если в belongsToMany явно не указывать таблицу (вторым параметром), то она определяется как "производная от алфавитного порядка имен связанных моделей".

Получается что промежуточная таблица должна быть user_video.
Либо просто указать название таблицы во втором параметре

$this->belongsToMany(User::class, 'video_user');

Дальнейшее использование, например...

$user = User::with('videos')->first();
foreach ($user->videos as $video) {
    dump($video);
}

По сути with можно не указывать. Но на сколько знаю, разница в том, что при указании with сразу подгружает данные, а без указания - по необходимости.