createMany 相当于 updateOrCreate

Chu*_*utt 5 laravel eloquent laravel-5

当你想在一次调用中“更新或创建”许多记录时,Laravel 中是否有createMany等效的方法?updateOrCreate

换句话说,是否存在某种updateOrCreateMany功能?

从文档来看,似乎没有一个具有该名称的函数,但也许还有另一种友好的 Laravel 方法可以做到这一点......或者我应该只使用 a foreach(也许也使用 MySQL 的插入重复功能)?

小智 1

我刚才遇到了同样的问题,我到处搜索,但在查看Eloquent 文档之前无法得到有效的解决方案。Laravel 有一个upsert方法可以做到这一点。updateOrCreate您可以轻松地使用 upsert 方法,如下所示:

\n
Flight::upsert([\n    [\'departure\' => \'Oakland\', \'destination\' => \'San Diego\', \'price\' => 99],\n    [\'departure\' => \'Chicago\', \'destination\' => \'New York\', \'price\' => 150]\n], [\'departure\', \'destination\'], [\'price\']);\n
Run Code Online (Sandbox Code Playgroud)\n

upsert方法接受 2 个参数,第一个是要更改的数据的数组,第二个是要用于检查唯一性的列的数组。该方法的第三个也是最后一个参数是一个列数组,如果数据库中已存在匹配的记录,则应更新该列。

\n