2017-12-08 16 views
1

これは私のモデルでは、私の関係の方法である:Laravelイーガーローディング関係 - >ここで、()

ので
public function relation() 
{ 
    return $this->belongsTo('App\Table', 'table_2_id', 'table_2_id')->where('table_1_id', $this->table_1_id); 
} 

、上記のモデルとTable2の両方が同じ列を持っているが、多くの可能性があります2つのテーブルで共有されている2番目のカラムにフィルタリングしたいのですが、table_1_idです。

コマンドラインでは完全に動作しているように見えますが、関係を読み込むのが空の場合は、

リレーションシップメソッドから追加の->where()を削除すると、熱心な読み込みが機能します。

私は熱心ローディング午前方法は

->with('relation.nestedRelation'); 

を行うことである私も、まだ

->with(['relation' => function ($q) { 
    $q->with('nestedRelation'); 
}]) 

私はちょうどそれが助けかどうかを確認するために属性として追加しようとしましたが、試しました喜びはありません。

答えて

1

あなたはwhereColumn()機能を使用することができます

->whereColumn('table_1.table_1_id', 'table_2.table_1_id') 

をそれとも、それを使用することができます。

public function filterRelation(){ 
    return $this->relation->where('table_1_id', $this->table_1_id); 

} 
+0

おかげで、私はその機能については知らなかった、私は私が「、不明な列のエラーを取得しますこれを行うには結合が必要だと仮定していますか? – martincarlin87

+0

あなたはそれをしなければならないでしょうが、望んでいなければ、ちょうど私が作った編集を使うことができます:)そして、あなたが最初にあなたが望む行だけでなく関係全体をロードすることです。 –