关于Laravel 5.3的一次更改,
现在,我有一个我想保存的模型。
之前,我在做:
for each (seg in xmlResponse.OBR.children()) {
if (seg.name().toString() == "SEG") {
var sample_value = seg['SEG.1']['SEG.1.1'].toString();
}
}
我可以知道操作是否成功。
现在,使用新的:
中提及如果自上次检索或保存模型以来模型尚未更改,则Eloquent save方法现在返回false。
如果模型没有改变,则返回false。
现在我的代码告诉我有一个错误,因为我相信真或假是操作好坏的结果。
现在,我怎样才能检查save()是否成功,即使它没有改变数据???
答案 0 :(得分:4)
检查您的型号是否脏。
// A B
$result = !$model->isDirty() || $model->save()
A
将为false
,但B
应为true
。因此$result
将为true
A
将为true
,因此$result
将为真。false
和A
都会B
$result
,因此save()
将为假。 / LI>
我解释一下:这是因为Eloquent只是做了一个数据库查询 IF 更改了一些内容。 Laravel开发人员决定更改saving()
响应,现在您可以知道是否进行了查询,或者是否有任何更改。
根据@patricus的评论,第一个解决方案不会触发updating
和true
事件,原因很明显: PHP,因为许多语言会在{{}时停止评估OR表达式找到{1}}。
因此,如果您需要触发此事件,则应执行以下操作:
$wasClean = $model->isClean(); // The oposite of 'isDirty()'
$result = $model->save() || $wasClean;