加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 07:47:24 所属栏目:MsSql教程 来源:网络整理
导读:出于复杂架构和原因的原因一个需要使用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`.`ca
出于复杂架构和原因的原因一个需要使用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))
})

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读