我想链接 2 个可以通过我制作的特征访问的全局范围。
trait ActivatedTrait
{
public static function bootActivatedTrait()
{
static::addGlobalScope(new ActivatedScope);
}
public static function withInactive()
{
$instance = new static;
return $instance->newQueryWithoutScope(new ActivatedScope);
}
}
trait PublishedTrait
{
public static function bootPublishedTrait()
{
static::addGlobalScope(new PublishedScope);
}
public static function withUnpublished()
{
$instance = new static;
return $instance->newQueryWithoutScope(new PublishedScope);
}
}
当我这样称呼我的模型时,它可以工作
MyModel::withInactive()
MyModel::withUnpublished()
但这并不
MyModel::withInactive()->withUnpublished()
编辑
出于某种原因,这段代码在 Laravel 4.2 下工作,但我切换到 5.5,现在它坏了。
编辑 2
如果我制作像这样的本地范围scopeWithInactive()
,scopeWithUnpublished()
我可以将它们链接起来就好了。