查询 laravel 4.2 中联接对象的范围

Querying scopes on joined object in laravel 4.2

我不确定这在 laravel 中是否可行,因为我还没有看到示例,但如果有的话会很有帮助。

假设我有一个 User 和一个 Post 对象,post 有一些复杂的逻辑和活动状态,我想将其封装在其中。

class Post {
    static public scopeActive($query) {
        // Fuzzy logic for determining activity
    }
}

查询用户post我想我可以做到

User::whereHas('Post');

然而,我在尝试扩展此语法以应用 Active 范围时迷失了方向,因为这仅适用于 post 对象。

我想查询活跃的用户post。

这样就可以了。

User::whereHas('Post', function($q)
    {
        $q->active();
    }
);

文档只说明 $q 是 'the query' 实际上它是一个很棒的 'Post' Builder 对象。

同样值得注意的是,这不会加入 Post,仅检查具有给定查询属性的 Post 对象是否存在。