0

在 Laravel 4 中有用于创建、创建、更新、更新等的模型事件。

有没有人找到一种方法来做类似于阅读,阅读事件而无需破解/扩展 QueryBuilder 类?

即使这不是一个事件,我也想找到一种方法来在(其中一个)查询结果被注入模型属性之前/期间/之后实现这一点。

到目前为止,我只是在我的核心/基本模型类上覆盖 getAttributeFromArray 方法,该方法有效,但显然每次您尝试获取模型中的属性/属性时都会运行逻辑(最终可能是一项代价高昂的操作)。

谢谢!

4

1 回答 1

5

我能够通过在我的核心/基础模型类中添加和覆盖 1 个方法来实现这一点(扩展 eloquent\model)

public static function read($callback)
{
    static::registerModelEvent('read', $callback);
}

public function setRawAttributes(array $attributes, $sync = false)
{

    parent::setRawAttributes($attributes,$sync);

    $this->fireModelEvent('read');
}

这样,当结果注入模型时,我的读取事件只会触发一次。而不是在模型上按 __get 调用运行事件。

于 2013-05-25T15:39:24.130 回答