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)
这就是你需要的.
总结以上是内存溢出为你收集整理的php – 或者没有使用Laravel雄辩的关系查询全部内容,希望文章能够帮你解决php – 或者没有使用Laravel雄辩的关系查询所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)