Laravel(5.4)のピボット(中間)テーブルの列を作成し、その結果をフィルタリングするにはどうすればよいですか?Laravel(5.4)の中間(ピボット)テーブル列をフィルタリング/選択する方法
私は2つのモデルFilmsとCastAndCrewを持っています。 CastAndCrewは映画で働く様々な監督、プロデューサー、俳優です。ピボットテーブルは、CastAndCrewメンバーとFilmの間の関係のタイプを定義する必要があります。明らかに、例えば誰かが次のようになる可能性があります。 1つの映画の俳優と別の映画のプロデューサーであるため、CastAndCrewテーブルのエントリにこれを定義することはできません。だから私はピボットテーブルで関係を定義する必要があると仮定しますが、私はこれを正確に行う方法がわかりません。私がこれまで持っている:
class Film extends Model
{
protected $fillable = array('filmtitle', 'description');
public function List_Directors()
{
return $this->belongsToMany('App\CastAndCrew')->withPivot('type')->wherePivot('type', 'director');
}
public function List_Actors()
{
return $this->belongsToMany('App\CastAndCrew')->withPivot('type')->wherePivot('type', 'actor');
}
}
と新しいCastAndCrewメンバーがサイトに追加されます
class CastAndCrew extends Model
{
protected $fillable = array('firstname', 'lastname');
public function List_Films_With_Director()
{
return $this->belongsToMany('App\Film')->withPivot('type')->wherePivot('type', 'director');
}
public function List_Films_With_Actor()
{
return $this->belongsToMany('App\Film')->withPivot('type')->wherePivot('type', 'actor');
}
}
を、私は、例えばを添付する方法を使用することを意図しています新しいディレクターを追加する:
$newcastcrew->CastAndCrew::create(['firstname' => Request::get('firstname'), 'lastname' => Request::get('lastname')]);
$newcastcrew->List_Films_With_Director()->attach($filmID, ['type' => 'director']);
1.)そうですか?
2.)->withPivot('type')
はピボットテーブルに 'タイプ'列を作成していますか?そうでない場合は、どこで定義しますか?
2.)おそらく、の->wherePivot('type', 'director')
句は、その映画の監督であるCastAndCrewメンバーを返しますか? (私が欲しいものです)
訂正ありがとう!あなたのアイデアやロジック
おかげ
すべてのことは問題ありません。 –