Laravel:使用Fluent在JOIN中使用复杂条件

前端之家收集整理的这篇文章主要介绍了Laravel:使用Fluent在JOIN中使用复杂条件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
出于复杂架构和原因的原因一个需要使用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(我知道空位不对 – 试验)我无法摆脱;否则它看起来非常接近

有帮助吗?

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'));
 })

解决方法

看起来你需要使用 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))
})

猜你在找的MsSQL相关文章