gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 10:26:09 25 4
gpt4 key购买 nike

由于复杂的架构和需要使用 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'));
})

最佳答案

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

关于Laravel:在 JOIN with Fluent 中使用复杂条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16082214/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com