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

php – 或者没有使用Laravel雄辩的关系查询

发布时间:2020-12-14 19:49:08 所属栏目:大数据 来源:网络整理
导读:在Laravel中,我有两个名为Booking和Clients的表.对于特定的预订,我与一个客户有关系.当我向客户查询预订时,除非我包含orWhere,否则一切都运作良好.请查看下面的代码段. if($client_name!=null) { $client_name='%'.$client_name; $bookings=$bookings-whereH
在Laravel中,我有两个名为Booking和Clients的表.对于特定的预订,我与一个客户有关系.当我向客户查询预订时,除非我包含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',$client_name);                 
            });
        }

使用注释掉的orWhere行,我可以通过用户指定的first_name获取客户端的正确预订.但是当我在查询中使用或者查询last_name时,所有行都显示为每个行都匹配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',$client_name)
                    ->orWhere('last_name',$client_name);
            });
        });

这将导致如下查询:

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

这就是你需要的.

(编辑:李大同)

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

    推荐文章
      热点阅读