Laravel Eloquent-在表中插入多条记录(具有唯一约束的列)

穆罕默德·沙特(Muhammad Saud)

我的应用程序中有一个名为“ categories”的表,对“ category_name”具有唯一性约束,我想在“ categories”中插入多行。

错误的解决方案:

foreach($categories as $category) {
   Category::firstOrCreate(array('category_name' => $category['name']));
}

这可能是一个解决方案,但不是一个很好的解决方案。问题是当出现混乱或成千上万条记录时,这将对数据库进行大量查询。不好

与解决方案比较

foreach($categories as $category){
    $cats[] = array('category_name' => $category['name']);
}
Category::insert($cats);

但是,当我尝试插入重复的“ category_name”时,它会引发异常,并且不会插入任何类别名称。

我知道我们可以使用,INSERT IGNORE但是我正在寻找一些laravel解决方案。

马尔辛·纳比亚列克

我认为这是不可能的,因为在第二种情况下,将执行一个查询,因此即使您遇到任何错误,也不会插入任何数据,因为SQL服务器由于唯一约束而拒绝了该数据。我认为Laravel无法解决。

可能这样的妥协是为了更快地解决它:

foreach($categories as $category){
   $names[] = $category['name']
}

$dups = Category::whereIn('name', $names)->lists('name');

if ($dups) {
  // here you can log or display message that some categories won't be inserted
}

$namesIns = [];
$cat = [];
foreach($categories as $category){
    $item = ['category_name' => $category['name']];
    if (!in_array($category['name'], $dups) && !in_array($item, $cat)) {
      $cat[] = $item;
      $namesIns[] = $category['name'];
    }
}
Category::insert($cat);

$ids = Category::whereIn('name', $namesIns)->lists('id');

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel Eloquent创建忽略列

来自分类Dev

使用Laravel和Eloquent从表中全选

来自分类Dev

如何用Laravel 4 Eloquent连接列?

来自分类Dev

Laravel Eloquent最后插入的对象错误的属性

来自分类Dev

Laravel Eloquent-防止返回特定的列

来自分类Dev

Laravel Eloquent firstOrFail返回表中的所有记录

来自分类Dev

在Laravel Eloquent中,将空记录插入表中

来自分类Dev

如何在Laravel Eloquent中插入具有多个belongsTo关系的记录

来自分类Dev

Laravel Eloquent:在Eloquent中获取联接表的ID字段

来自分类Dev

从Laravel Eloquent获取特定的列

来自分类Dev

Laravel Eloquent截断-外键约束

来自分类Dev

Laravel Eloquent具有很多关系

来自分类Dev

Laravel:在Eloquent中解码JSON

来自分类Dev

如何使用Laravel Eloquent删除多个记录

来自分类Dev

Laravel Eloquent在联接表上的位置

来自分类Dev

Laravel Eloquent的表命名约定hasManyThrough关系

来自分类Dev

Laravel Eloquent firstOrFail返回表中的所有记录

来自分类Dev

Laravel Eloquent具有很多关系

来自分类Dev

Laravel Eloquent的表命名约定hasManyThrough关系

来自分类Dev

Laravel mysql 查询具有唯一约束条件的多个插入(使用查询构建器)

来自分类Dev

Laravel Eloquent 如何引用正确的表

来自分类Dev

Laravel Eloquent PHP 如何获取 MySQL 表中以唯一列值作为键的所有行

来自分类Dev

无法在 Laravel/Eloquent 中插入默认条目

来自分类Dev

删除laravel eloquent中的第一条记录

来自分类Dev

Foreach 插入 Laravel 5 Eloquent

来自分类Dev

Laravel 3 表 Eloquent:关系

来自分类Dev

Laravel Eloquent 连接表关系

来自分类Dev

Laravel Eloquent - 数据透视表

来自分类Dev

Laravel 5.8 Eloquent 检查记录是否存在

Related 相关文章

热门标签

归档