Выровнять отношения Laravel Eloquent Collection

Я использую следующую структуру базы данных:

кино
   — Я бы
   — заглавие

директор
   — Я бы
   — название

режиссер
   — director_id
   — movie_id

Модели настроены так:

Movie.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Movie extends Model
{
public $table = "movie";

/**
* The roles that belong to the user.
*/
public function directors()
{
return $this->belongsToMany('App\Director', 'movie_director');
}
}

Director.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Director extends Model
{
public $table = "director";

/**
* The roles that belong to the user.
*/
public function movies()
{
return $this->belongsToMany('App\Movie', 'movie_director');
}
}

Таким образом, между фильмом и режиссером существует отношение многих ко многим.

На странице с подробностями фильма я хотел бы опубликовать другие фильмы режиссеров оригинального фильма.

    $movie = Movie::with('directors.movies')->find(1);

Это дает мне все данные, которые мне нужны, но чтобы получить полный список фильмов, мне нужно было бы просмотреть коллекцию режиссеров, а затем просмотреть коллекцию фильмов внутри этого режиссера. Нет ли более быстрого / простого способа сделать это?

4

Решение

Я думаю, что один из способов сделать это будет добавить метод к вашему Movie модель с использованием hasManyThrough чтобы получить другие фильмы, связанные режиссером.

public function relatedMovies()
{
return $this->hasManyThrough('App\Movie', 'App\Director');
}

Затем отдельно стремитесь загрузить эти отношения, а не загружать вложенные отношения.

$movie = Movie::with('directors', 'relatedMovies')->find(1);
0

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

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

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