4
私は、次のデータベース構造を使用しています:平坦化Laravel雄弁コレクション関係
映画
- ID
- タイトル
ディレクター
- ID
を - 名前
movie_director
- 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');
}
}
ディレクター。 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);
私が必要とするすべてのデータを提供しますが、私は監督の収集とその監督の内側映画のコレクションを、ループをループしなければならない映画の完全なリストを取得します。これを行うより速く/簡単な方法はありませんか?
たぶん私は何かが足りないんだけど、あなただけhttps://laravel.com/docs/5.4/collections#available-methodsあたりとして、その上に平らに使用したり、flatMapできないのですか? –
はい、私は何ができるこのような何か: '$映画= $ movie-> directors-> flatMap(関数($ valの){$ val->映画返す;});' \t しかし、あなたが何を必要に応じて別のレベル、またはおそらく2レベル深く行く?次に、これらのフラットマップ関数の複数をネストする必要があります。私は実際にドット表記法を使うなど、より簡単な方法があることを本当に望んでいました。 – Lloyd