【问题标题】:Laravel bulk insert with one-to-one relation具有一对一关系的 Laravel 批量插入
【发布时间】:2018-06-25 03:00:51
【问题描述】:

我知道我可以在 laravel 中插入多条记录:

$data = [
    ['name' => '...', 'age' => ...],
    ['name' => '...', 'age' => ...],
    ['name' => '...', 'age' => ...],
];
Model::insert($data);

但是是否可以进行也具有一对一关系的批量插入?这样我可以同时向两个数据库中插入数据?

类似:

$数据 = [ ['姓名' => '...', '年龄' => ...], ['姓名' => '...', '年龄' => ...], ['姓名' => '...', '年龄' => ...], ];

Model::withSecondTable()->insert($data);

【问题讨论】:

  • 我认为这不可能。因为您需要父表中的一些 id 来为相关表添加数据插入。
  • 我在你的例子中看不到任何关系。
  • @RazaMehdi 是的,这就是问题所在。但不是我想只对所有用户进行批量插入,然后保存插入的 id 并使用用户详细信息表进行另一次插入,这样我仍然只会创建 2 个插入查询,而不是执行循环并进行 20 多个插入查询

标签: mysql laravel laravel-5 orm bulkinsert


【解决方案1】:

是的,这是可能的。例如:

###用户模型:

public function item()
{
  return $this->belongsTo('Item');
}

###物品型号:

public function users()
{
  return $this->hasMany('User');
}

要从项目角度保存用户,请执行以下操作:

$item->users()->save($user);

要将项目与用户关联,请执行以下操作:

$user->item()->associate($item);
$user->save();

【讨论】:

  • 但是我可以使用它进行批量插入吗?还是我必须遍历我的用户数组并逐个插入?这将创建很多插入,而不是一次只执行一个插入 sql
  • 这并没有解释如何对关系进行批量插入,因此没有回答 OP 提出的问题。
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 2021-03-09
  • 2013-12-31
  • 1970-01-01
  • 2015-03-16
  • 2013-01-12
  • 1970-01-01
  • 2017-11-23
相关资源
最近更新 更多