diff --git a/src/Illuminate/Database/Query/Grammars/Grammar.php b/src/Illuminate/Database/Query/Grammars/Grammar.php index e15c55644070..eda6441f6bd7 100755 --- a/src/Illuminate/Database/Query/Grammars/Grammar.php +++ b/src/Illuminate/Database/Query/Grammars/Grammar.php @@ -1062,7 +1062,13 @@ public function compileInsertGetId(Builder $query, $values, $sequence) */ public function compileInsertUsing(Builder $query, array $columns, string $sql) { - return "insert into {$this->wrapTable($query->from)} ({$this->columnize($columns)}) $sql"; + $table = $this->wrapTable($query->from); + + if (empty($columns)) { + return "insert into {$table} $sql"; + } + + return "insert into {$table} ({$this->columnize($columns)}) $sql"; } /** diff --git a/tests/Database/DatabaseQueryBuilderTest.php b/tests/Database/DatabaseQueryBuilderTest.php index 64392b94f356..fab4e39e6649 100755 --- a/tests/Database/DatabaseQueryBuilderTest.php +++ b/tests/Database/DatabaseQueryBuilderTest.php @@ -2793,6 +2793,21 @@ function (Builder $query) { $this->assertEquals(1, $result); } + + public function testInsertUsingWithEmptyColumns() + { + $builder = $this->getBuilder(); + $builder->getConnection()->shouldReceive('affectingStatement')->once()->with('insert into "table1" select * from "table2" where "foreign_id" = ?', [5])->andReturn(1); + + $result = $builder->from('table1')->insertUsing( + [], + function (Builder $query) { + $query->from('table2')->where('foreign_id', '=', 5); + } + ); + + $this->assertEquals(1, $result); + } public function testInsertUsingInvalidSubquery() {