gpt4 book ai didi

php - Laravel 多表连接保存到变量并针对它运行 foreach(搜索功能)

转载 作者:行者123 更新时间:2023-11-29 01:55:23 25 4
gpt4 key购买 nike

我目前有 3 个表:Shows、Genres 和 Show_Genre(将两者相关联)。我有一个搜索表单,它根据他们选择的类型将一系列带有值的复选框提交到一个数组中。目前,我想将 Shows 表和 Genres 表关联到一个变量中,并针对选中的每个流派复选框运行一次查询。然后,过滤选择后,我可以显示与用户参数匹配的结果 Show 对象。

我现在的设置如下

public function searchShows(SearchRequest $request)
{
//$ShowsWithGenres give a collection inside a collection which I can't seem to even access its values without doing a bunch of ugly code using count() in a for loop
$ShowsWithGenres = Show::with('genres')->get();
$genres = $request->name;
if(isset($genres))
{
foreach($genres as $genre)
{
//iterate against the selection repeatedly reducing the number of results
}
}
}

谢谢。

最佳答案

您应该使用 whereHas()whereIn

也许应该这样做:

$shows = Show::whereHas('genres', function($q) use($genre_ids)
{
$q->whereIn('id', $genre_ids);

})->get();

编辑试试这个,但我不确定性能。

$query= Show::query();

foreach($genre_ids as $id){
$query->whereHas('genres', function($q) use($id)
{
$q->where('id', $id);
})
}
$shows = $query->get();

关于php - Laravel 多表连接保存到变量并针对它运行 foreach(搜索功能),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30600282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com