我有一个要解决的问题,但我不知道。首先我想提一下,我使用的是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());
不幸的是,当我运行命令时,全局作用域仍然存在。 在这件事上,我会请你帮助。