![](/img/trans.png)
[英]Laravel 5.4 - 'updateOrCreate' method. Check If record was 'updated' or 'created'
[英]How to find if record is created or updated in updateOrCreate function?
我有一個簡單的郵寄表格。 記錄通過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']]);
}
是否有內置方法來查找創建的新記錄或更新現有記錄?
任何形式的建議,我們將不勝感激。
您需要確定模型或給定屬性是否已被修改。 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.