Laravel查询生成器-Where具有查询选择值

Laravel查询生成器-Where具有查询选择值,laravel,eloquent,laravel-5.6,Laravel,Eloquent,Laravel 5.6,我很困惑Where has函数是如何工作的 我想检查whereHas from Main Query中的一列 ClientSeatController.php $seats=ClientSeat::其中'clientId',$req->clientId ->其中有'services',函数$query使用$req{ $query->where'clientId',$req->clientId; }->得到; ClientSeat.php关系 公共职能服务{ 返回$this->hasOneClie

我很困惑Where has函数是如何工作的

我想检查whereHas from Main Query中的一列

ClientSeatController.php

$seats=ClientSeat::其中'clientId',$req->clientId ->其中有'services',函数$query使用$req{ $query->where'clientId',$req->clientId; }->得到; ClientSeat.php关系

公共职能服务{ 返回$this->hasOneClientSeatService::class、'clientSeatId'、'clientSeatId'; } toSql

从“sln\U客户端座位”中选择*其中“clientId”=3且存在从“sln\U客户端座位服务”中选择*其中“sln\U客户端座位服务”。“clientSeatId”=`sln\U客户端座位服务`.`clientSeatId`和“clientId`=3 我需要下面这样的查询

从“sln\U客户端席位”中选择*其中“clientId”=3且存在从“sln\U客户端席位服务”中选择*其中“sln\U客户端席位服务”。“clientSeatId”=`sln\U客户端席位`.`clientSeatId`和“clientId`=3 我想检查clientSeatId of client_seat_services表和clientSeatId of client_seats表列,其中包含函数

查询未正确执行预期的查询


请帮帮我。

删除$query->where'clientSeatId'、'clientseats.clientSeatId';从你的whereHas结束。您的ClientSeat::services方法已经在定义关系的该部分。您在那里编写的方式实际上是将字符串client_seats.clientSeatId放置在查询中,而不是实际的Id值。因此,您不会得到错误,并且所有结果都将为空。

它是否会抛出任何错误?不会得到任何错误,而是得到空结果。我假设从表中得到3行。当我根据您的注释删除代码时,我得到的查询与更新后的问题类似。事实上,这是错误的。exists查询的where子句检查为错误。sln\u client\u seats.clientSeatId=sln\u client\u seat\u services.clientSeatId查询现在与来自的查询匹配,我需要如下查询。只有两边都换了,但这无关紧要。