首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Laravel中使用firstOrCreate向数据库插入数组?

如何在Laravel中使用firstOrCreate向数据库插入数组?
EN

Stack Overflow用户
提问于 2017-08-07 03:06:16
回答 2查看 1.7K关注 0票数 0

我有一个这样的数组,它有120个元素

代码语言:javascript
复制
`array (size=120)
  0 => 
    array (size=8)
      'name' => That the quick brown fox jumps over the lazy - 7' (length=53)
      'url' => string 'google.com/zyx' (length=134)
      'category' => string 'search-engine' (length=6)
  1 => 
    array (size=8)
      'name' => string 'Mr. john brandy gave me a wall nut of quite' (length=67)
      'url' => string 'yahoo.com/dzxser' (length=166)
      'category' => string 'indian' (length=6)`

我想将它们插入到我创建的模型的书签表中,并确保不会发生重复。我特别找到了这个https://laravel.com/docs/5.4/eloquent#other-creation-methodsfirstOrCreate方法。

我假设我必须使用foreach,但我不确定如何使用。有没有人能帮我解决这个问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-07 05:48:49

实际上你不需要firstOrCreate,你需要的是updateOrCreate。查看Laravel Other Creation methods,你会发现这个方法。

假设数组在$alldata

代码语言:javascript
复制
foreach($alldata as $data) {
    MyModel::updateOrCreate($data); //the fields must be fillable in the model
}

这将在循环循环时运行update/或create 120个查询。优点是,您不能有重复,而如果有重复,它只会对表执行更新。

但是,确保数据不重复的最好方法是在创建数据库表时对其进行设置。您可以在许多字段上设置唯一约束,如果是这样的话。

票数 2
EN

Stack Overflow用户

发布于 2017-08-07 03:28:02

如果您不希望在插入记录数组时发生复制,那么您所要做的就是设置一个约束,确保字段是唯一的。

如果您正在使用迁移来创建数据库模式,则可以使用类似以下内容:$table->string('name')->unique();

现在,例如,这将确保'name‘列数据是

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45535587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档