gpt4 book ai didi

laravel - Eloquent 复杂连接

转载 作者:行者123 更新时间:2023-12-02 15:46:59 25 4
gpt4 key购买 nike

我已经制定了范围

public function scopeCollaborative($query){
return $query->leftJoin('collaborative', function($join){
$join->on('imms.phone2', '=', 'collaborative.phone')
->orOn('imms.phone', '=', 'collaborative.phone')
->where('collaborative.user_id', '=', App('CURUSER')->id);
});
}

在查询日志中此范围添加:

left join `cs_collaborative` on 
`cs_imms`.`phone2` = `cs_collaborative`.`phone` or
`cs_imms`.`phone` = `cs_collaborative`.`phone` and
`cs_collaborative`.`user_id` = 3

但我需要:

left join `cs_collaborative` on 
(`cs_imms`.`phone2` = `cs_collaborative`.`phone` or
`cs_imms`.`phone` = `cs_collaborative`.`phone`) and
`cs_collaborative`.`user_id` = 3

我没有找到好的解决方案,JoinClause有函数:On、orOn、where、orWhere。

但并非所有函数都可以将函数作为输入并对查询进行分组...

有人有理想吗?

最佳答案

Laravel 不允许您构建这样的连接子句,因此您需要它才能使其工作:

public function scopeCollaborative($query){
return $query->leftJoin('collaborative', function($join){
$join->on('imms.phone2', '=', 'collaborative.phone')
->where('collaborative.user_id', '=', App('CURUSER')->id)
->orOn('imms.phone', '=', 'collaborative.phone')
->where('collaborative.user_id', '=', App('CURUSER')->id);
});
}

关于laravel - Eloquent 复杂连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25788160/

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