我有一个简单的邮寄表格。记录通过updateOrCreate
功能保存到数据库。
我正在跟踪要存储的记录,
提交表单后,user_id
和product_id
用于检查记录是否存在。如果存在,记录将被更新,否则将使用该函数创建新记录。
public function updateOrCreate($input)
{
return $this->model->updateOrCreate(['product_id'=> $input['product_id'],'user_id'=>$input['user_id']],['rating'=>$input['rating'],'review'=>$input['review']]);
}
是否有内置方法来查找创建的新记录或更新现有记录?
任何建议都值得赞赏。
答案 0 :(得分:0)
您需要确定模型或给定属性是否已被修改。 wasChanged()方法将有助于识别模型是否已更新。
$model = $this->model->updateOrCreate(['product_id'=> $input['product_id'],'user_id'=>$input['user_id']],['rating'=>$input['rating'],'review'=>$input['review']]);
// It will return true if the record have been modified
$wasChanged = $model->wasChanged();
if ( $wasChanged ) {
// updated
}
else {
// created
}
希望这对您有所帮助。
答案 1 :(得分:0)
口才模型有一个名为$wasRecentlyCreated
的公共财产。设置为when an insert is performed。并且只会在插入相同请求后插入true
;不适用于连续的请求。如果已执行更新,它将为false
。
请注意,对于完全相同的模型实例,该属性也仅是true
。如果用Product::find($id)
重新加载模型,它将是false
。不幸的是,如果您在模型上调用refresh()
,会发生什么情况?