如何在Laravel Eloquent模型中更新数据恢复?

时间:2018-05-22 13:27:01

标签: laravel laravel-5 eloquent

我希望能够在从我的数据库加载Eloquent模型时运行一些代码。 fill()似乎不是正确的方法,因为当我从查询中加载get对象时,它不是代码。

上下文又名“为什么有人想这样做”

我希望我的对象有一些复杂的属性,这些属性当前表示为公共属性,在保存时保持为JSON,我需要在从数据库加载时恢复它们。

Laravel:5.6

1 个答案:

答案 0 :(得分:1)

您正在寻找的事件是retrieved,尽管在laravel文档中提到过, 与其他事件相比不是很明显,你可以像这样做或将它委托给观察者类:

Model::retrieved(function(Model $model) {
    $model->foo = json_decode($this->json)['foo']; // '{"foo":"bar"}'
})

(是的,此事件在从数据库中检索后,但在您的其他代码之前运行)