2017-08-03 17 views
1

次のようなものがある場合、「with(new Model)」部分に左結合を追加するにはどうすればよいですか?Laravel Eloquent leftJoin whereInクエリ内

Model::whereIn('name', function ($query) use ($link) { 
    $query->select('name') 
     ->from(with(new Model)->getTable()) // would like to do a leftJoin here 
     ->where('link', $link); 
})->get(); 

私は、私も試してみた

Model::whereIn('name', function ($query) use ($link) { 
    $query->select('name') 
     ->from(with(new Model)->leftJoin('tableZ', Model.col1, '=', tableZ.col1)->getTable()) 
     ->where('link', $link); 
})->get(); 

を試してみた:私はこれを行うことについては行くことになってるか

Model::whereIn('name', function ($query) use ($link) { 
    $query->select('name') 
     ->from(with(new Model)->getTable()) 
     ->leftJoin('tableZ', Model.col1, '=', tableZ.col1) 
     ->where('link', $link); 
})->get(); 

正確にわかりません。

+0

希望の未処理のSQLを作成して投稿することもあります。 [debugbar](https://github.com/barryvdh/laravel-debugbar)をインストールし、達成したいSQLクエリーをデバッグしてください。楽しむ! – Kyslik

+0

そのデバッグバーはかっこよく見えます。確かめます。 – rotaercz

+0

最初にインストールしなければならないことは...歓声! – Kyslik

答えて

0

linkは、tableZのフィールドですか?その場合は

->where('table.link', $link) 

となります。私はあなたの2番目の例でそれを使用します。私はleftJoin()を直接with関数に適用するとは思えません。()はモデルオブジェクトを返すように見えますが、クエリは表示されません。

0

おそらくこれを行う必要があります。

DB::table("table_A") 
    ->leftJoin("table_B","table_A.id,"=","table_B.A_id) 
    ->select(['table_A.name as name','xxxxxx']); 
0

私はあなたがこれはあなたの問題を解決することができる試みることができると思う:

Model::whereIn('name', function ($query) use ($link) { 
    $query->select('name') 
     ->from(with(new Model)->getTable()) 
     ->leftJoin('tableZ', Model.col1, '=', tableZ.col1) 
     ->where('tableZ.link', $link); 
})->get(); 

があなたのためにこの作品を願っています!