【问题标题】:Laravel insert array of arrays with foreign keysLaravel 插入带有外键的数组数组
【发布时间】:2017-01-05 12:45:58
【问题描述】:

我有两个表,news 和 news_links。新闻表看起来像这样(id、title、body、date_published),而 news_links 看起来像这样(id、news_id、url)。

我正在尝试构建一个可以插入新闻数组的查询:

array( 
  array(
    "id" => "123456",
    "title" => "First Title",
    "body" => "First body text",
    "date_published" => "01-01-16"
  )
  array(
    "id" => "22222",
    "title" => "Second Title",
    "body" => "Second body text",
    "date_published" => "01-01-16"
  )
)

这个数组会包含多个数组,这只是一个例子。

与这些新闻相关的链接也将被插入。

array(
  array(
    "0" => "1",
    "1" => "123456",
    "2" => "img_url"
  )
  array(
    "0" => "2",
    "1" => "123456",
    "2" => "img_url"
  )
  array(
    "0" => "2",
    "1" => "22222",
    "2" => "img_url"
  )
)

我是否必须构建一个 foreach 循环并运行多个查询,或者有没有办法运行单个查询并将所有内容都插入到 news 和 news_links 中?

【问题讨论】:

    标签: arrays laravel insert foreign-keys relation


    【解决方案1】:

    我认为这是一个简单的解决方案NewsLink::insert(array);

    【讨论】:

      【解决方案2】:

      不,您不能使用一个查询在两个不同的表中插入数据。但是,您可以在一个查询中为一张表组合多个插入。 它看起来像

      INSERT INTO news_links VALUES(1,123456,'url'),(2,123456,'url'),(2,22222,'url');
      

      【讨论】:

      • 所以我必须在我的数组上执行某种 implode() 来构建我接受的查询?
      • 在 Laravel 中,您可以像 \DB::table('table name')->insert([['id' => 1, 'news_id' => 123456, 'url' => 'url'], [], []]) @JesperAndersen
      • 我可能不得不使用 DB::insert(),因为我使用的是“将忽略插入到‘表’中”,但很高兴知道我可以像这样使用查询生成器。谢谢!
      猜你喜欢
      • 2020-04-30
      • 1970-01-01
      • 2023-01-26
      • 2019-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多