Open gisostallenberg opened 1 week ago
If an expression contains a join the update bindings are wrongly ordered.
The following patch is a fix for this:
--- /dev/null +++ ../src/Query/Grammars/Traits/CompilesExpressions.php @@ -3,6 +3,7 @@ namespace Staudenmeir\LaravelCte\Query\Grammars\Traits; use Illuminate\Database\Query\Builder; +use Illuminate\Support\Arr; use Illuminate\Support\Str; use Staudenmeir\LaravelCte\Query\Builder as CteBuilder; use Staudenmeir\LaravelCte\Query\FirebirdBuilder; @@ -169,11 +170,11 @@ */ public function prepareBindingsForUpdate(array $bindings, array $values) { - $values = array_merge($bindings['expressions'], $values); + $cleanBindings = Arr::except($bindings, ['select', 'join', 'expressions']); - unset($bindings['expressions']); - - return parent::prepareBindingsForUpdate($bindings, $values); + return array_values( + array_merge($bindings['join'], $bindings['expressions'], $values, Arr::flatten($cleanBindings)) + ); } /**
Hi @gisostallenberg, Thanks for reporting this. What does your query look like? What database are you using?
If an expression contains a join the update bindings are wrongly ordered.
The following patch is a fix for this: