Tyl*_*ton 11
您有两个有效选项:
\Illuminate\Datebase\Eloquent\Model以添加此类事件.\Illuminate\Datebase\Eloquent\Model以添加此项(并可能在GitHub上向Laravel发送(未经请求的)拉取请求).根据问题1685,看起来好像他们不想要它.如果我是你,我会选择第一个选项,我就是这样做的:
<?php namespace \Illuminate\Database\Eloquent;
abstract class LoadingModel extends Model {
/**
* Register a loaded model event with the dispatcher.
*
* @param \Closure|string $callback
* @return void
*/
public static function loaded($callback)
{
static::registerModelEvent('loaded', $callback);
}
/**
* Get the observable event names.
*
* @return array
*/
public function getObservableEvents()
{
return array_merge(parent::getObservableEvents(), array('loaded'));
}
/**
* Create a new model instance that is existing.
*
* @param array $attributes
* @return \Illuminate\Database\Eloquent\Model|static
*/
public function newFromBuilder($attributes = array())
{
$instance = parent::newFromBuilder($attributes);
$instance->fireModelEvent('loaded', false);
return $instance;
}
}
Run Code Online (Sandbox Code Playgroud)
只需确保有问题的模型是子类LoadingModule.我已经确认这个工作,因为我找到了一个很好的用例.较旧版本的PHP将MySQL值作为字符串返回.通常,PHP会在数值运算中将它们静默地转换为各自的数字类型.但是,转换为JSON不被视为数字操作.JSON值表示为字符串.这可能会导致我的API客户端出现问题.所以我loaded在模型中添加了一个事件,将值转换为正确的类型.
| 归档时间: |
|
| 查看次数: |
4087 次 |
| 最近记录: |