hasManyThrough是否忽略中间表上的全局范围?

时间:2018-10-29 17:32:31

标签: php laravel laravel-5 eloquent laravel-5.6

我有3张桌子:公司,游戏和测试。

  • 公司有很多游戏
  • 游戏有很多测试

Game模型具有全局范围,我可以确认它正在起作用:

public function apply(Builder $builder, Model $model)
{
    $builder->where('type', 'live');
}

我使用Game模型进行的任何直接查询都只会返回游戏类型设置为“实时”的结果。

我在return $this->hasManyThrough('App\Test', 'App\Games')模型中使用Company来获取特定公司的所有测试。

但是,无论类型如何,这都会返回所有游戏的结果。

所以我想知道是否使用hasManyThrough绕过了我在Game模型中设置的全局范围?

如果是这样,有什么解决办法吗?我想确保我正在做的所有查询都在过滤掉所有未设置为“实时”的游戏。

欢呼

1 个答案:

答案 0 :(得分:0)

您需要在关系的定义中添加->withoutGlobalScopes()

class User extends Model
{
   public function games()
   {
      return $this->hasManyThrough(Test::class, Games::class)
             ->withoutGlobalScopes();
   }
}