【问题标题】:How to insert Array to Database using firstOrCreate in Laravel?如何在 Laravel 中使用 firstOrCreate 将数组插入数据库?
【发布时间】:2018-01-14 02:11:42
【问题描述】:

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

`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-methods 特别是firstOrCreate 方法。

我假设我必须使用 foreach,但我不确定如何使用。谁能帮我解决一些问题。

【问题讨论】:

标签: php arrays laravel foreach eloquent


【解决方案1】:

其实你不需要firstOrCreate,你需要updateOrCreate。检查 Laravel Other Creation methods 你会发现那个方法。

假设数组在$alldata

foreach($alldata as $data) {
    MyModel::updateOrCreate($data); //the fields must be fillable in the model
}

这将在循环中运行更新/或创建 120 个查询。好处是,你不能有重复,如果有重复,它只会对表执行更新。

但是,确保数据不会以任何方式出现重复的最佳方法是在制作数据库表时进行设置。如果情况如此,您可以在许多字段上设置唯一约束。

【讨论】:

    【解决方案2】:

    如果您不希望在插入记录数组时发生重复,那么您只需设置一个约束以确保字段是唯一的。

    如果您使用迁移来创建数据库架构,您可以使用以下内容:$table->string('name')->unique();

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

    【讨论】:

    • 我不想设置约束。我想使用 firstorCreate 方法。
    猜你喜欢
    • 2019-09-26
    • 2018-01-31
    • 2020-05-01
    • 2021-10-27
    • 1970-01-01
    • 2020-12-31
    • 2016-07-29
    • 2018-06-16
    • 1970-01-01
    相关资源
    最近更新 更多