删除特定查询的全局范围

时间:2017-04-18 19:53:32

标签: laravel laravel-5.3

我是一个用户和帖子模型。它们都具有Global范围,只能获得已发布或未阻止的用户。

现在,即使作者被阻止,我也需要获取所有帖子的列表。

这是我使用的查询。

$posts = Post::withoutGlobalScopes()->paginate(10);

但是由于我附加了与之关系的作者关系,我将作者视为null(由于全局范围,如果用户被阻止)。

如何在上述查询中删除作者的全局范围并获取所有帖子(已发布/未发布)以及作者(已阻止/未阻止)。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我有一个类似的案例,我改变了单一关系的定义(尤其是->belongsTo),以明确地关闭通常全局的范围。如果我引用了帖子并要求其作者,我总是希望收到作者对象,即使作者被阻止了。

class Post extends Model{
  public function author(){
    return $this->belongsTo('User')->withBlocked();
  }
}

但在我的情况下,我没有做一对多关系的反向(如果我有一个作者的参考,并询问帖子我通常并不意味着未发表,我&#如果我想要的话,请问他们。)