我有一個表,其中包含“姓名”、“姓氏”、“user_id”等列,我需要先按 id 檢查條目是否存在,然后按姓名和姓氏一起檢查,如果不存在,則創建它。我如何巧妙地做到這一點,而不是制作兩個更新陳述句,并且如果都回傳 0 則創建一個新的(看起來太笨重)
我想過使用firstOrNew,但它似乎只能在匹配所有引數時才能作業。有沒有我錯過的方法可以很好地適用于我的情況?
uj5u.com熱心網友回復:
你可以嘗試這樣的事情(假設你想創建一個模型[保存到資料庫]):
$attributes = [
'name' => ...,
'surname' => ...,
];
$model = Model::where('id', $id)
->orWhere(fn ($q) => $q->where($attributes))
->firstOr(fn () => Model::create($attributes));
這將按 id 或 name 和 surname 搜索記錄。如果沒有找到,它將創建一個帶有姓名和姓氏的新記錄(假設這些屬性在模型上是可填充的)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/403656.html
標籤:
