我想检查数据库中的某些列是否已更改。
我的控制器中的更新代码如下:
$tCustomer = TCustomer::withTrashed()->findOrFail($id);
$tCustomer->update(request()->all());
如何将其与 - > isDirty()函数合并?
我尝试在$tCustomer->update(request()->all());
之后添加它,但它总是返回false:
$dirty = $tCustomer->getDirty('payment_method_id');
我必须在更新之前或之后添加isDirty()吗?
答案 0 :(得分:1)
您可以使用fill()
代替update()
,先检查isDirty()
,然后再检查save()
。这样,您就可以利用可注入区域的优势。
$myModel->fill($arrayLikeinUpdate);
if ($myModel->isDirty()) {
// do something
}
$myModel->save();
答案 1 :(得分:0)
您必须使用observers,在保存模型之前可以使用updating()雄辩模型事件,或者在保存模型后使用updated(),您只需在{{{{{{ 1}}模型:
TCustomer
答案 2 :(得分:-1)
isDirty
返回一个bool,因此您可以将其与条件一起使用,以检查给定的模型属性是否已更改。例如:
// modify an attribute
$myModel->foo = 'some new value';
....
// do other stuff
...
// before the model has been saved
if ($myModel->isDirty()) {
// update model
$myModel->save();
}
因此,在更新(保存)模型之前需要进行检查。
调用update
会在一次调用中使用给定的属性保存模型,因此您不会在该上下文中使用isDirty
。