【发布时间】:2020-01-04 06:53:43
【问题描述】:
我正在使用 updateOrInsert 在数据库中插入一行或更新它以防它已经存在。
从手册: https://laravel.com/docs/5.8/queries
更新或插入 有时您可能想要更新数据库中的现有记录,或者在不存在匹配记录时创建它。在这种情况下,可以使用 updateOrInsert 方法。 updateOrInsert 方法接受两个参数:一个用于查找记录的条件数组,以及一个包含要更新的列的列和值对数组。
updateOrInsert 方法将首先尝试使用第一个参数的列和值对来定位匹配的数据库记录。如果记录存在,它将使用第二个参数中的值进行更新。如果找不到记录,将插入一条新记录,其中包含两个参数的合并属性:
就我而言,我不想覆盖(更新)所有列,而只想覆盖 updated_at 列。
在 MySql 中,我使用 INSERT 和 ON DUPLICATE KEY UPDATE 指定唯一要更新的列。
如何在 Laravel 中使用 updateOrInsert 做到这一点?感谢您的任何建议。
DB::table('products')->updateOrInsert(
['upc' => $request->get('upc'),],
['upc' => $request->get('upc'),
'name' => $request->get('name'),
'created_at' => ...,
'updated_at' => ...]
);
【问题讨论】:
标签: laravel laravel-5.8