![](/img/trans.png)
[英]How to know if model has changed after submit a form in Laravel 5.5?
[英]how to know if laravel model values changed on save callback
按照這個答案,我在Laravel中模擬保存回調(類似於rails),如下所示:
class LessonPlan extends Eloquent {
public function save(array $options = array())
{
// before save code
parent::save();
// after save code
}
}
但是,當我保存新頁面或更新現有 Page
時,我在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 one可以提交更新表格,而無需實際更改任何內容)..有更清潔的方法嗎?
您可以使用返回bool
的isDirty()
方法和返回具有更改值的array
getDirty()
。
public function save(array $options = array())
{
$changed = $this->isDirty() ? $this->getDirty() : false;
// before save code
parent::save();
// Do stuff here
if($changed)
{
foreach($changed as $attr)
{
// My logic
}
}
}
你試過Model::getDirty()
嗎? 我自己沒有嘗試過,但它返回自上次同步以來已更改的屬性。 請參閱API文檔 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.