Laravel Eloquent:是否可以使用“创建”方法将多个记录作为数组插入?

时间:2020-02-05 07:04:43

标签: laravel eloquent

Laravel文档说,我们可以使用create雄辩的方法插入“ a”记录

$flight = App\Flight::create(['name' => 'Flight 10']);

是否可以使用create方法插入多个记录而无需循环。即

$flight = App\Flight::create([['name' => 'Flight 10'], ['name' => 'Flight 11']]);

当前,我正在使用insert方法,但是它无法处理我必须使之可填充的created_at和updated_at值。

$flight = App\Flight::insert([['name' => 'Flight 10'], ['name' => 'Flight 11']);

4 个答案:

答案 0 :(得分:1)

create()支持仅插入一条记录

insert()支持插入许多记录

createMany()仅支持仅用于关系,不支持模型。

因此,您只能为这种雄辩的构建器选择insert()方法。

但是,您可以在迁移中使用useCurrent(),因此默认值将自动设置当前时间

$table->timestamp('created_at')->useCurrent();
$table->timestamp('updated_at')->useCurrent();

这将适用于insert()方法,而无需手动设置时间戳:

$flight = App\Flight::insert([['name' => 'Flight 10'], ['name' => 'Flight 11']);

答案 1 :(得分:0)

插入不会添加时间戳记值,因此您必须手动输入

 $data = [
    [
      'name' => 'Flight 10'
       'created_at' => date('Y-m-d H:i:s'),
       'updated_at' => date('Y-m-d H:i:s')
    ],
    [
      'name' => 'Flight 11'
       'created_at' => date('Y-m-d H:i:s'),
       'updated_at' => date('Y-m-d H:i:s')
    ]
 ];

App\Flight::insert($data);

答案 2 :(得分:0)

手动填写时间戳记。

$data_to_create = [
[
  'name' => 'Flight 10'
   'created_at' => date('Y-m-d H:i:s'),
   'updated_at' => date('Y-m-d H:i:s')
],
[
  'name' => 'Flight 11'
   'created_at' => date('Y-m-d H:i:s'),
   'updated_at' => date('Y-m-d H:i:s')
]
];

App\Flight::insert($data_to_create);

答案 3 :(得分:-1)

$data = [
[
  'name' => 'Flight 10'
   'created_at' => date('Y-m-d H:i:s'),
   'updated_at' => date('Y-m-d H:i:s')
],
[
  'name' => 'Flight 11'
   'created_at' => date('Y-m-d H:i:s'),
   'updated_at' => date('Y-m-d H`enter code here`:i:s')
]

];

App \ Flight :: createMany($ data);