Har precis testat. Det här fungerar.
$newUsers = [
[
'username' => 'Felicia',
'age' => 27,
],
[
'username' => 'Timmy',
'age' => 71,
],
];
$columns = array_keys($newUsers[0]);
Varna! Det finns två sätt att göra massinsättning. Detta är ett sätt:
$insertQuery = $this->Users->query();
$newUsersValuesExpression = new ValuesExpression($columns, $insertQuery->typeMap()->types([]));
$newUsersValuesExpression->values($newUsers);
$insertQuery->insert($columns)
->values($newUsersValuesExpression)
->execute();
Som föreslagits av ndm föredrar jag det här sättet.
$insertQuery = $this->Users->query();
$insertQuery->insert($columns);
// you must always alter the values clause AFTER insert
$insertQuery->clause('values')->values($newUsers);
$insertQuery->execute();