如何过滤PHP Laravel中类别的帖子

时间:2019-04-10 12:50:51

标签: php

帖子:id,标题,...

类别:id,category_name,...

category_post:post_id,category_id

类别:

Categogy 1
Category 2

帖子:

Post 1
Post 2

category_post:

post_id | category_id
Post 1  | Category 1
Post 2  | Category 1
Post 1  | Category 2

现在。我想要同时具有类别1和类别2的过滤器帖子。

结果:发布1。

2 个答案:

答案 0 :(得分:0)

$recruitmentId = [3,4,5];
        $model = Recruitment::with('categories')
            ->selectRaw("recruitments.id, recruitments.title, category_recruitment.recruitment_id")
            ->join('category_recruitment',function($join){
                $join->on("category_recruitment.recruitment_id","=","recruitments.id");
            })
            ->get()
            ->toArray();
        $collection = collect($model);
        $data = $collection->filter(function ($item, $key) use ($recruitmentId){
            if (!empty($item['categories']) && count($item['categories']) >= count($recruitmentId)) {
                $query = null;
                foreach ($item['categories'] as $k => $v) {
                    foreach ($recruitmentId as $key => $value) {
                        $query .= $v['category_id'] == $value;
                    }
                }
                return $query;
            }
        })
        ->unique('title')
        ->values()
        ->all();
        dd($data);

答案 1 :(得分:0)

这是多对多的关系 你可以$ this-> belongsTomany方法还是append方法用作laravel中的过滤器。 laravel many to many