2016-09-13 8 views
0

私はテーブルの下などの別の関係ない私の現在の選択モデルでwhere句を使用したいどのようにlaravel雄弁の関係のために使用するのですか?

table Customer 
-------id-----customer_name 

Table ModelA 


table Customer 
-------id-----fk_custome_id 

table ModelB 
-------id-----fk_ModelA_id 

コントローラ

$data['data'] = customer::with(['modelA','modelA.modelB']) 
->where('fk_customer_id', 2)->get(); 

カスタマー・モデル

final function ModalA(){ 
    return $this->hasMany('App\Models\ModelA', 'fk_customer_id', 'id'); 
} 

MODELAで機能モデル

final function Modelb(){ 
    return $this->hasMany('App\Models\ModelB', 'fk_modelA_id', 'id'); 
} 

エラー: 私は選択SQLは、テーブルの顧客の列名fk_customer_idを見つけることができませんので、以下のようにエラーが発生しました、そうだろうどのようにすることができます(表MODELAで)Iユーザーfk_customer_idため。

答えて

1

あなたはuseYouは次のようwhereHasを使用することができますすることができます:あなたはあなたと一緒に使用しているときので、それはちょうど熱心な負荷constrintsですが、あなたは(customerモデルの)メインクエリに添付しません

$data['data'] = customer::with(['modelA','modelA.modelB']) 
    ->whereHas('modelA', function ($query) { 
     $query->where('fk_customer_id', 2); 
    })->get(); 

。したがって、2つの方法があります:1つは近代的で、whereHasを使用するか、joinクエリを使用します。

関連する問題