【发布时间】:2018-06-05 18:05:02
【问题描述】:
我很困惑 whereHas 函数是如何工作的?
我想从主查询中检查 whereHas 中的一列。
ClientSeatController.php
$seats = ClientSeat::where('clientId',$req->clientId)
->wherehas('services',function($query) use($req){
$query->where('clientId',$req->clientId);
})->get();
ClientSeat.php(关系)
public function services(){
return $this->hasOne(ClientSeatService::class,'clientSeatId','clientSeatId');
}
toSql();
select * from `sln_client_seats` where `clientId` = 3 and exists (select * from `sln_client_seat_services` where `sln_client_seats`.`clientSeatId` = `sln_client_seat_services`.`clientSeatId` and `clientId` = 3)
我需要如下查询。
select * from `sln_client_seats` where `clientId` = 3 and exists (select * from `sln_client_seat_services` where `sln_client_seat_services`.`clientSeatId` =`sln_client_seats`.`clientSeatId` and `clientId` = 3)
我想检查 client_seat_services 表的 clientSeatId 与 whereHas 函数内的 client_seats 表列的 clientSeatId。
查询未按预期正确执行。
请帮帮我。
【问题讨论】:
-
它是否抛出任何错误?
-
没有得到任何错误,得到空结果。我想从表中得到 3 行。
标签: laravel eloquent laravel-5.6