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)) }) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |