laravel 5.5全局范围已删除

时间:2018-06-21 21:21:15

标签: php laravel scope eloquent

我有一个要解决的问题,但我不知道。首先我想提一下,我使用的是Laravel 5.5版本。这是问题;

<?php
class Product extends Model{

   use WithPassive, WithPrivate;

   public static function boot(){
       parent::boot();

       parent::observe( ProductObserver::class );
   }

}

我的模型文件在上面。如模型文件中所示,有2个GlobalScope特征。这些是默认设置。

sql
   SELECT * FROM `products` WHERE `products`.'is_public' = 1 AND `products`.'is_private' = 0

我要做的是根据特定条件删除这些全局范围。

<?php
public static function boot(){
       parent::boot();

       static::addGlobalScope('xxx', function(Builder $builder){
           if(...){
               $builder->withoutGlobalScopes([
                   ActiveScope::class,
                   PublicScope::class,
               ]);
           }
       });

       parent::observe( ProductObserver::class );
   }

当我转储构建器时,相关的全局作用域将被删除,尽管实际上并没有被删除。

<?php
   dump(Products::toSql());

不幸的是,当我运行命令时,全局作用域仍然存在。 在这件事上,我会请你帮助。

0 个答案:

没有答案