diff --git a/CHANGELOG.md b/CHANGELOG.md index 9db75187..59bbd8c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ## 2.0.0 under development +- Enh #260: Support `Traversable` values for `DMLQueryBuilder::batchInsert()` method with empty columns (@Tigrov) - Enh #255: Implement `SqlParser` and `ExpressionBuilder` driver classes (@Tigrov) ## 1.3.0 March 21, 2024 diff --git a/src/DMLQueryBuilder.php b/src/DMLQueryBuilder.php index 077954c6..c1b57e10 100644 --- a/src/DMLQueryBuilder.php +++ b/src/DMLQueryBuilder.php @@ -30,6 +30,10 @@ final class DMLQueryBuilder extends AbstractDMLQueryBuilder */ public function batchInsert(string $table, array $columns, iterable $rows, array &$params = []): string { + if (!is_array($rows)) { + $rows = $this->prepareTraversable($rows); + } + if (empty($rows)) { return ''; } diff --git a/tests/CommandTest.php b/tests/CommandTest.php index c9731874..6f6a39b2 100644 --- a/tests/CommandTest.php +++ b/tests/CommandTest.php @@ -65,7 +65,7 @@ public function testAddDefaultValue(): void public function testBatchInsert( string $table, array $columns, - array $values, + iterable $values, string $expected, array $expectedParams = [], int $insertedRow = 1 diff --git a/tests/Provider/CommandProvider.php b/tests/Provider/CommandProvider.php index 2b443533..7945e398 100644 --- a/tests/Provider/CommandProvider.php +++ b/tests/Provider/CommandProvider.php @@ -61,7 +61,10 @@ public static function batchInsert(): array 'empty columns and objects' => [ ':qp3' => '1', ], - 'empty columns and Traversable' => [ + 'empty columns and a Traversable value' => [ + ':qp3' => '1', + ], + 'empty columns and Traversable values' => [ ':qp3' => '1', ], ];