Laravel Eloquent: Можно ли использовать метод «create» для вставки нескольких записей в виде массива? - PullRequest
1 голос
/ 05 февраля 2020

Как сказано в документе Laravel, мы можем вставить запись "a" с помощью метода create eloquent

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

Можно ли вставить несколько записей с помощью метода create без l oop. то есть

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

В настоящее время я использую метод вставки, но он не заботится о значениях create_at и updated_at, которые я должен сделать заполняемыми.

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

Ответы [ 5 ]

1 голос
/ 05 февраля 2020

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']);
0 голосов
/ 05 февраля 2020
$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);

0 голосов
/ 05 февраля 2020

Попробуйте

использовать insert метод для вставки данных

 $data = [
    [
      'name' => 'Flight 10',

    ],
    [
      'name' => 'Flight 11',

    ]
 ];

App\Flight::insert($data);
0 голосов
/ 05 февраля 2020

Заполните временные метки вручную.

$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);
0 голосов
/ 05 февраля 2020

вставка не добавляет значения метки времени, поэтому вы должны ввести вручную

 $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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...