Laravel Eloquent,仅选择存在关系的行

时间:2015-07-23 22:11:20

标签: php laravel laravel-4 eloquent

我正在尝试从表格中进行选择,但我只想选择具有现有关系的内容。

例如,如果我有用户和评论,并且用户有很多评论,我想做类似的事情:

User::hasComments()->paginate(20);

因此,我只想选择至少有1条评论的用户,并对该查询的结果进行分页。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:16)

根据Laravel's Eloquent documentation查询关系(查找"查询关系存在"副标题),这应该有效:

User::has('comments')->paginate(20);

答案 1 :(得分:-1)

颠倒你的想法,我认为你可以做到。

$userIds = Comment::distinct()->select('user_id')->groupBy('user_id')->get();

您可能不需要groupBy(),但这应该让您开始尝试这样做。

然后你应该能够像这样迭代:

foreach($userIds as $id) {
    $user = $id->user;  //$id is technically a Comment instance so you can
                        //  call the methods on that model
    echo $user->name;
}

答案 2 :(得分:-1)

就像这样:

User :: has('comments')-> with('comments')-> get();