Laravel 删除特定查询的全局作用域

Laravel 删除特定查询的全局作用域,laravel,laravel-5.3,Laravel,Laravel 5.3,我有一个用户和Post模型。它们都具有全局作用域,只能获取已发布或未阻止的用户 现在,我需要得到所有文章的列表,即使作者被阻止 这是我使用的查询 $posts = Post::withoutGlobalScopes()->paginate(10); 但是,由于我附加了作者关系,因此我将作者设置为null(如果用户被阻止,则由于全局范围) 如何在上面的查询中删除作者的全局范围,并获得所有文章(已发布/未发布)以及作者(已阻止/未阻止) 我该怎么做 我有一个类似的案例,我改变了单一关系的定义

我有一个用户和Post模型。它们都具有全局作用域,只能获取已发布或未阻止的用户

现在,我需要得到所有文章的列表,即使作者被阻止

这是我使用的查询

$posts = Post::withoutGlobalScopes()->paginate(10);
但是,由于我附加了作者关系,因此我将作者设置为null(如果用户被阻止,则由于全局范围)

如何在上面的查询中删除作者的全局范围,并获得所有文章(已发布/未发布)以及作者(已阻止/未阻止)


我该怎么做

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

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

但是在我的例子中,我没有对一对多的关系做相反的处理(如果我提到一位作者,并且要求发表文章,我通常不是指未发表,如果我想要的话,我会要求发表)。

使用
::with('Author')
在调用
withoutGlobal
scopes()之前,使用
:with('Author')
,不,它具有相同的效果。
author
关系位于附加的数组
中。所以,它总是被称为。