Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 按ID列表进行SQL筛选_Php_Mysql_Sql_Laravel - Fatal编程技术网

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相关