何时在Laravel全局范围对象上触发`apply`方法?

时间:2014-12-02 21:38:41

标签: php laravel-4

我试图通过following the documentation在Laravel 4.2中实现全局范围。我创建了一个UserTypeTrait来向全局范围添加UserTypeScope。这是我的UserTypeTrait

trait UserTypeTrait
{
    public static function bootUserTypeTrait()
    {
        Log::info('bootUserTypeTrait fired');
        static::addGlobalScope(new UserTypeScope);
    }
}

这是我的UserTypeScope

class UserTypeScope implements ScopeInterface
{
    public function apply(Builder $builder)
    {
        Log::info('apply fired');
        $model = $builder->getModel();
    }

    public function remove(Builder $builder)
    {
        // @todo
    }

我正在尝试将此特征应用于我的Customer对象:

class Customer extends User
{
    use UserTypeTrait;
}

每当应用程序启动时,我都会收到确认,即在我的日志文件中触发了bootUserTypeTrait()方法。我想在Customer的{​​{1}}方法中为与apply模型相关的所有查询添加约束,但我无法弄清楚如何触发{{1} }} 方法。从文档中,似乎应该在我查询模型时触发它。我尝试了一些测试,但没有一个测试会导致UserTypeScope方法被触发。例如:

apply

在我的日志文件中,我看到很多apply和没有public function testUserTypeScopeApplyFires() { FactoryMuffin::create('Users\Customer'); $customers = Customer::all(); // this does note fire `UserTypeScope::apply()` $customer = Customer::first(); // neither does this } 条目。何时调用bootUserTypeTrait fired方法?我以为我正确地遵循了文档。我错过了什么吗?

0 个答案:

没有答案