[英]How query to array of categories to get posts in Laravel?
嗨,在我的网站中,我想通过复选框输入显示选择多类别结果的帖子。 我使用“-”分隔符获取 URL 中的类别并分解为一个数组。 我的问题在这里,如何通过使用类别数组名称获取帖子? 帖子和类别之间的关系是多对多的。
将数据发送到帖子网址:
public function filter(Request $request){
$data = $request->all();
$cat_Name="";
if(!empty($data['categoryFilter'])){
foreach($data['categoryFilter'] as $cat){
if(empty($cat_Name)){
$cat_Name = "&cat_Name=".$cat;
}else{
$cat_Name .= "-".$cat;
}
}
}
$finalUrl = "posts"."?".$cat_Name;
return redirect::to($finalUrl);
}
从 url 接收数据并分解为数组:
if(!empty($_GET['cat_Name'])){
$categoryArray = explode('-',$_GET['cat_Name']);
}
现在我希望查询获取 $categoryArray 中已存在类别的帖子。
由于您在Post
和Category
之间存在多对多关系,
您可以使用whereHas来查找具有该cat_name
类别的帖子:
Post::whereHas('categories', function($q) use ($categoryArray) {
return $q->whereIn('cat_name', $categoryArray);
});
只需使用request
来获取参数而不是$_GET
:
public function yourActionName(Request $request)
{
if(!empty($request->input('cat_Name')){
$categoryArray = explode('-', $request->input('cat_Name'));
$posts = Post::whereHas('categories', function($q) use ($categoryArray) {
return $q->whereIn('cat_name', $categoryArray);
})->get();
} else {
...
}
...
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.