diff --git a/src/Illuminate/Database/Query/Builder.php b/src/Illuminate/Database/Query/Builder.php index 4feb5862c095..00fc764236e9 100755 --- a/src/Illuminate/Database/Query/Builder.php +++ b/src/Illuminate/Database/Query/Builder.php @@ -2224,7 +2224,9 @@ public function delete($id = null) } return $this->connection->delete( - $this->grammar->compileDelete($this), $this->getBindings() + $this->grammar->compileDelete($this), $this->cleanBindings( + $this->grammar->prepareBindingsForDelete($this->bindings) + ) ); } diff --git a/src/Illuminate/Database/Query/Grammars/Grammar.php b/src/Illuminate/Database/Query/Grammars/Grammar.php index 61b6193d947f..7e2ce556325c 100755 --- a/src/Illuminate/Database/Query/Grammars/Grammar.php +++ b/src/Illuminate/Database/Query/Grammars/Grammar.php @@ -761,6 +761,17 @@ public function compileDelete(Builder $query) return trim("delete from {$this->wrapTable($query->from)} $wheres"); } + /** + * Prepare the bindings for a delete statement. + * + * @param array $bindings + * @return array + */ + public function prepareBindingsForDelete(array $bindings) + { + return Arr::flatten($bindings); + } + /** * Compile a truncate table statement into SQL. * diff --git a/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php b/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php index 0c78826587b3..9010a43f4762 100755 --- a/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php +++ b/src/Illuminate/Database/Query/Grammars/MySqlGrammar.php @@ -2,6 +2,7 @@ namespace Illuminate\Database\Query\Grammars; +use Illuminate\Support\Arr; use Illuminate\Support\Str; use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\JsonExpression; @@ -204,6 +205,21 @@ public function compileDelete(Builder $query) : $this->compileDeleteWithoutJoins($query, $table, $where); } + /** + * Prepare the bindings for a delete statement. + * + * @param array $bindings + * @return array + */ + public function prepareBindingsForDelete(array $bindings) + { + $cleanBindings = Arr::except($bindings, ['join', 'select']); + + return array_values( + array_merge($bindings['join'], Arr::flatten($cleanBindings)) + ); + } + /** * Compile a delete query that does not use joins. *