Laravel,选择发布其第一个批准的修订的所有帖子

时间:2018-11-08 16:56:55

标签: laravel eloquent

我有2个表文章修订
它们之间有一种关系 one2many

修订表具有两列 isApproved isPublished

现在,我要选择所有文章,当其第一个已批准修订版是已发布

Article::whereHas('revisions', function ($query) {
    $query->where('isApproved', 1)->where('isPublished', 1);
});

但是此代码选择了所有已批准并发布修订的文章

1 个答案:

答案 0 :(得分:1)

尝试过滤结果:

$articles = Article::
               whereHas('revisions', function ($query) {
                   $query->where('isApproved', 1)->where('isPublished', 1);
               })
               ->get()
               ->filter(function ($article) {
                    return $article->revisions->first(function ($revision) {
                               return $revision->isApproved == true;
                           })
                           ->isPublished == true;

               });