在 Laravel 4 中有用于创建、创建、更新、更新等的模型事件。
有没有人找到一种方法来做类似于阅读,阅读事件而无需破解/扩展 QueryBuilder 类?
即使这不是一个事件,我也想找到一种方法来在(其中一个)查询结果被注入模型属性之前/期间/之后实现这一点。
到目前为止,我只是在我的核心/基本模型类上覆盖 getAttributeFromArray 方法,该方法有效,但显然每次您尝试获取模型中的属性/属性时都会运行逻辑(最终可能是一项代价高昂的操作)。
谢谢!
我能够通过在我的核心/基础模型类中添加和覆盖 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 调用运行事件。