【问题标题】:Get all related many-to-many from all records instead from each record laravel从所有记录中获取所有相关的多对多,而不是从每个记录 laravel
【发布时间】:2017-07-25 01:48:57
【问题描述】:

我有通过post_tagstags 表相关的posts 表。我想从所有用户帖子中获取所有标签。假设一个用户有 3 个帖子,那么我想从其中 3 个帖子中获取所有标签,而无需在用户帖子中循环来获取每个帖子的各个相关标签,这就像 join + distinct 但也许 Eloquent 中有方法可以让它变得简单。谢谢,如果我的问题不清楚或重复,请告诉我。

【问题讨论】:

    标签: php database laravel join eloquent


    【解决方案1】:

    使用whereHas():

    $tags = Tag::whereHas('posts', function($q) use($userId) {
        $q->where('user_id', $userId);
    })->get();
    

    【讨论】:

    • user_id 未找到,因为在查询生成器中从未调用过posts 表,因此没有user_id 列。
    • @AnggaAriWijaya 如果你在posts 表中没有user_id,这意味着你没有正确定义Eloquent 关系。
    • 我有,但是你的代码指向它只返回一条记录。
    • @AnggaAriWijaya 如果你想获取用户在他的帖子中使用的所有标签,那么这段代码是 100% 工作的。如果这不是您所需要的,请说明您想要得到什么。
    • 我明白了,之前很抱歉,我在标签模型中的关系反向输入错误,所以它一开始就没有到达帖子。我会接受你的回答,谢谢。
    猜你喜欢
    • 2017-04-22
    • 2019-02-24
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 2014-10-21
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    相关资源
    最近更新 更多