【问题标题】:Retrieve posts that belong to a list of categories laravel检索属于 laravel 类别列表的帖子
【发布时间】:2016-05-28 05:54:19
【问题描述】:

我需要您的帮助来找到创建此查询的解决方案。想象一下,我有 2 个表:帖子和类别,还有一个数据透视表:category_post。

帖子:id、标题、...

类别:id、category_name、...

category_post:post_id、category_id

现在,我要检索我想要的类别:

$categories = Category::whereIn('id', $array)->lists('id');

在此查询之后,我有一个类别 ID 列表,我只想检索属于这些类别的帖子。不仅是属于某个类别的帖子,还包括属于所有这些类别的帖子。

我希望我能很好地解释自己。 问候

【问题讨论】:

    标签: laravel eloquent


    【解决方案1】:

    您可以为数据透视类注册belongTo 关系。 (前提是 category_idpost_id 是外键。)

    class CategoryPost extends Eloquent {
    
        protected $table = 'category_post';
    
        public function posts() {
            return $this->belongsTo('posts');
        }
    
        public function categories() {
            return $this->belongsTo('categories');
        }
    }
    

    现在,你可以打电话了

    CategoryPost::with('posts')->whereIn('category_id', $categories)->groupBy('post_id')->get();
    

    【讨论】:

    • 它工作得很好,我只需要添加 groupBy('post_id') 以删除重复的条目。谢谢!
    • 我还需要做一件事情才能让它发挥作用。添加haveRaw('count(*) > 1') 这样我就可以同时选择属于所有这些类别的帖子。
    猜你喜欢
    • 2018-12-31
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-12-27
    • 2021-03-15
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多