繁体   English   中英

如何查找是否在updateOrCreate函数中创建或更新记录?

[英]How to find if record is created or updated in updateOrCreate function?

我有一个简单的邮寄表格。 记录通过updateOrCreate函数保存到数据库中。

我正在跟踪要存储的记录,

  1. 用户身份
  2. PRODUCT_ID
  3. 评论
  4. 评分

提交表单后,使用user_idproduct_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']]);
}

是否有内置方法来查找创建的新记录或更新现有记录?

任何形式的建议,我们将不胜感激。

您需要确定模型或给定属性是否已被修改。 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
}

希望这对您有所帮助。

$wasRecentlyCreated模型上有一个名为$wasRecentlyCreated的公共财产。 进行插入时设置。 并且只有在插入相同请求后,它才会为true 不适用于连续的请求。 如果执行了更新,则将为false

请注意,该属性也仅对于完全相同的模型实例为true 如果使用Product::find($id)重新加载模型,则它将为false 不幸的是,如果您在模型上调用refresh() ,会发生什么呢?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM