繁体   English   中英

如何查询类别数组以获取 Laravel 中的帖子?

[英]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 中已存在类别的帖子。

由于您在PostCategory之间存在多对多关系,

您可以使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM