【发布时间】:2013-04-11 12:34:59
【问题描述】:
由于复杂的架构和需要使用 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
作为连接子句;我已经尝试了回调和我能想到的所有其他方法,但无法生成正确的语法。
我试过了:
->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)
})
但它在我的 1 & null 周围加上了反引号(我知道 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'));
})
【问题讨论】: