gpt4 book ai didi

php - orWhere 不使用 Laravel Eloquent 关系查询

转载 作者:可可西里 更新时间:2023-10-31 22:45:38 25 4
gpt4 key购买 nike

在 Laravel 中,我有两个名为 Booking 和 Clients 的表。对于特定预订,我与单个客户有 belongsTo 关系。当我向客户查询预订时一切正常,除非我包含 orWhere。请查看下面的代码片段。

if($client_name!=null)
{
$client_name='%'.$client_name;
$bookings=$bookings->whereHas('client',function($q) use ($client_name){
$q->where('first_name','LIKE',$client_name)
//->orWhere('last_name','LIKE',$client_name);
});
}

通过注释掉的 orWhere 行,我可以使用用户指定的 first_name 与客户进行正确的预订。但是当我在 last_name 的查询中使用 or 时,所有行都显示为好像 last_name 匹配每一行。

这是怎么回事?请帮忙。

最佳答案

问题是你现在有这样的代码:

WHERE foreignKey = X AND first_name = Y OR last_name = Z

很明显它没有返回它应该返回的内容。

现在,要使其工作,您需要将这些约束添加为子项,其中:

$bookings=$bookings->whereHas('client',function($q) use ($client_name){
$q->where( function ($q) use ($client_name) {
$q->where('first_name','LIKE',$client_name)
->orWhere('last_name','LIKE',$client_name);
});
});

这将导致如下查询:

WHERE foreignKey = X AND (first_name = Y OR last_name = Z)

这是你需要的。

关于php - orWhere 不使用 Laravel Eloquent 关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23564113/

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