Laravel Eloquent объединяет таблицы между собой?

У меня проблема. У меня есть две отдельные базы данных, одна для фильмов и одна для подписчиков. Это связано с тем, что фильмы могут иметь конкретные данные о фильме (название, изображение, режиссер) и т. Д., А затем у меня есть таблица следования, чтобы пользователь мог следить за фильмом. По сути, это просто кросс-таблица, в которой есть только id, userID, filmID. Это обычно используется, если пользователь заходит на страницу фильма, он проверяет, существует ли запись, и если да, то делает x, y, z.

Сейчас на странице пользователей я пытаюсь перечислить все, за чем они следуют. Так что в настоящее время я могу сказать.

    $following = Follow::where('userId', '=', $user->id)->orderBy('created_at', 'DESC')->get();

И это вернет мне все то, за чем следует пользователь. Однако моя проблема в том, что я не хочу отображать идентификатор фильма, я хочу отобразить картинку, заголовок, режиссера и т. Д. Эта информация, однако, есть в таблице фильмов. Так как я могу сказать сделать вызов, который получает все экземпляры Follow, но также захватывает прикрепленный к нему ряд фильмов. так что я могу идти.
echo $ follow-> title, и он покажет название фильма. Спасибо

0

Решение

Это то, как я решил эту проблему, это позволяет выполнять тот же процесс атрибута $ myquery->, не будучи слишком сложным.

    $followingUsers = Follow::where('userId','=', $user->id)->get();
$followingFilms = Follow::where('userId','=', $user->id)->get();
$followedFilms = new stdClass();
$i = 0;
foreach ($followingFilms as $follow)
{
$followedFilm = new stdClass();
$film = Film::where('id','=', $follow->filmId)->first();
$followedFilm->title = $film->title;
$followedFilm->coverUrl = $film->image;
$followedFilm->slug = $film->slug;
$followedFilm->id = $film->id;
$followedFilms->$i = $followedFilm;
$i++;
}

Это берет каждый объект из следующей таблицы, делает sql-запрос для получения информации и затем компилирует все это в объект $ followFilms.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]