在this回答之后,我在Laravel中建模保存回调(类似于rails),如下所示:
class LessonPlan extends Eloquent {
public function save(array $options = array())
{
// before save code
parent::save();
// after save code
}
}
但是,当我保存新页面或更新现有页面时,我会在Page
上调用save()。我怎么知道这个操作中哪个是哪个?
我试过像
这样的东西public function save(array $options = array())
{
// before save code
$oldLesson = clone $this;
parent::save();
..
if ($this->isLessonStatusChanged($oldLesson)) {
..
}
}
private function isLessonStatusChanged($oldLesson) {
return $this->status != $oldLesson->status;
}
但这并不好..因为$ oldLesson已经有了$ lesson的新值
我最终做的只是重新编写网址以查看它是否是更新请求..但我已经在晚上睡不着觉了(我的回答并不能告诉我是否真的告诉我任何值实际上已经改变.. b / c可以提交更新表格而不实际改变任何东西)..有更清洁的方法吗?
答案 0 :(得分:14)
您可以使用返回isDirty()
和bool
的{{1}}方法,该方法会返回包含更改值的getDirty()
。
array
答案 1 :(得分:0)
你试过Model::getDirty()
吗?我自己没有尝试过,但它会返回自上次同步后已更改的属性。 See the API docs