2017-08-03 245 views
1

如果我有類似以下的內容,我該如何添加左連接到「with(new Model)」部分?Laravel Eloquent left join in where where查詢

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 1個字段在tableZ?如果是的話

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

可能是你想要什麼。我會在你的第二個例子中使用它;我不認爲將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(); 

希望這對你的工作!