Php 按ID列表进行SQL筛选
我有三张桌子Php 按ID列表进行SQL筛选,php,mysql,sql,laravel,Php,Mysql,Sql,Laravel,我有三张桌子 1-rests 2-amenity_rest 3-amenities 我想发送一份便利设施清单,如[1,3] 它应该返回剩余的id=1 如果我发送数组[1,2,3],它应该不会返回结果 这样的查询看起来如何?您可以将查询构造为: select ar.rest_id from amenity_rest ar where ar.amenity_id in (1, 2, 3) group by ar.rest_id having count(*) = 3; -- "3" = size
1-rests
2-amenity_rest
3-amenities
我想发送一份便利设施清单,如[1,3]
它应该返回剩余的id=1
如果我发送数组[1,2,3],它应该不会返回结果
这样的查询看起来如何?您可以将查询构造为:
select ar.rest_id
from amenity_rest ar
where ar.amenity_id in (1, 2, 3)
group by ar.rest_id
having count(*) = 3; -- "3" = size of list
您可以将查询构造为:
select ar.rest_id
from amenity_rest ar
where ar.amenity_id in (1, 2, 3)
group by ar.rest_id
having count(*) = 3; -- "3" = size of list
控制器应具有如下功能:
function retrieveData(Request $request){
$data = Amenities_rest::whereIn('amenity_id', $request->amenities)
->groupBy('rest_id')
->havingRaw('COUNT (*) = ' . count($request->amenities))
->get();
return $data
}
应该这样做。我希望它能有所帮助。您的控制器应该具有如下功能:
function retrieveData(Request $request){
$data = Amenities_rest::whereIn('amenity_id', $request->amenities)
->groupBy('rest_id')
->havingRaw('COUNT (*) = ' . count($request->amenities))
->get();
return $data
}
应该这样做。我希望它能有所帮助。MySQL不支持阵列,所以你的问题不清楚。我的意思是阵列是一系列便利设施ids@ShenoudaShehata为什么[1,3]的输出应该是[1]而不是[1,3]我不明白,我猜这里你会把数组发送给负责进行查询的控制器,对吗?如果您发送[1,3],它不应该返回id=2的行吗?@Tarun因为便利设施的id[1,3]与rest 1MySQL相关,不支持数组,所以您的问题不清楚。我的意思是数组是便利设施的列表ids@ShenoudaShehata为什么[1,3]的输出应该是[1]而不是[1,3],我不明白,我猜这里你把数组发送给控制器,控制器负责进行查询,对吗?如果你发送[1,3],它不应该返回id=2的行吗?@Tarun,因为便利设施的id[1,3]与其余1相关