由于复杂模式和需要使用Fluent或Eloquent的库(不仅仅是原始DB :: query()),我需要创建:
LEFT JOIN `camp_to_cabin`
ON `camper_to_cabin`.`cabin_id` = `camp_to_cabin`.`cabin_id`
AND `camp_to_cabin`.`camp_id` =1 OR `camp_to_cabin`.`camp_id` IS NULL
Run Code Online (Sandbox Code Playgroud)
作为连接子句; 我已经尝试了回调和我能想到的其他一切,但无法获得正确的语法来生成.
我试过了:
->left_join('camp_to_cabin', function ($join){
$join->on( 'camper_to_cabin.cabin_id', '=', 'camp_to_cabin.cabin_id')
$join->on( 'camp_to_cabin.camp_id', '=', 1)
$join->on( 'camp_to_cabin.camp_id', '=', null)
})
Run Code Online (Sandbox Code Playgroud)
但它会在我的1&null(我知道空位不正确 - 试验)周围放置反引号,我无法摆脱; 否则它看起来非常接近
有帮助吗?
TIA
谢谢,菲尔 - 最后的答案是:
->left_join('camp_to_cabin', function ($join) use ($id){
$join->on( 'camper_to_cabin.cabin_id', '=', 'camp_to_cabin.cabin_id');
$join->on( 'camper_to_cabin.cabin_id', '=', DB::raw($id));
$join->or_on( 'camper_to_cabin.cabin_id', 'IS', DB::raw('NULL'));
})
Run Code Online (Sandbox Code Playgroud)
Phi*_*rks 13
看起来你需要使用DB::raw()否则->on()需要两列.就像是...
->left_join('camp_to_cabin', function ($join){
$join->on( 'camper_to_cabin.cabin_id', '=', 'camp_to_cabin.cabin_id')
$join->on( 'camp_to_cabin.camp_id', '=', DB::raw(1))
$join->or_on( 'camp_to_cabin.camp_id', '=', DB::raw(null))
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7355 次 |
| 最近记录: |