From cbb9e56dd5b679f91041999697fef486542de5f7 Mon Sep 17 00:00:00 2001 From: Mior Muhammad Zaki Date: Wed, 8 Mar 2023 13:21:44 +0800 Subject: [PATCH 1/4] [10.x] Fixes `Expression` no longer implements `Stringable` Signed-off-by: Mior Muhammad Zaki --- src/Illuminate/Database/Eloquent/Builder.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index 5e1d10f4223f..28209818b61a 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -6,6 +6,7 @@ use Closure; use Exception; use Illuminate\Contracts\Database\Eloquent\Builder as BuilderContract; +use Illuminate\Contracts\Database\Query\Expression; use Illuminate\Contracts\Support\Arrayable; use Illuminate\Database\Concerns\BuildsQueries; use Illuminate\Database\Eloquent\Concerns\QueriesRelationships; @@ -647,6 +648,8 @@ public function sole($columns = ['*']) public function value($column) { if ($result = $this->first([$column])) { + $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + return $result->{Str::afterLast($column, '.')}; } } @@ -662,6 +665,8 @@ public function value($column) */ public function soleValue($column) { + $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + return $this->sole([$column])->{Str::afterLast($column, '.')}; } @@ -675,6 +680,8 @@ public function soleValue($column) */ public function valueOrFail($column) { + $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + return $this->firstOrFail([$column])->{Str::afterLast($column, '.')}; } @@ -859,6 +866,8 @@ public function pluck($column, $key = null) { $results = $this->toBase()->pluck($column, $key); + $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + // If the model has a mutator for the requested column, we will spin through // the results and mutate the values so that the mutated version of these // columns are returned as you would expect from these Eloquent models. @@ -1775,6 +1784,8 @@ public function setModel(Model $model) */ public function qualifyColumn($column) { + $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + return $this->model->qualifyColumn($column); } From 8b12eb3f33ca4f249b6b20aa84dbc2630d340928 Mon Sep 17 00:00:00 2001 From: Mior Muhammad Zaki Date: Wed, 8 Mar 2023 13:25:25 +0800 Subject: [PATCH 2/4] wip Signed-off-by: Mior Muhammad Zaki --- src/Illuminate/Database/Eloquent/Builder.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index 28209818b61a..28945c8e6ecc 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -648,7 +648,7 @@ public function sole($columns = ['*']) public function value($column) { if ($result = $this->first([$column])) { - $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; return $result->{Str::afterLast($column, '.')}; } @@ -665,7 +665,7 @@ public function value($column) */ public function soleValue($column) { - $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; return $this->sole([$column])->{Str::afterLast($column, '.')}; } @@ -680,7 +680,7 @@ public function soleValue($column) */ public function valueOrFail($column) { - $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; return $this->firstOrFail([$column])->{Str::afterLast($column, '.')}; } @@ -866,7 +866,7 @@ public function pluck($column, $key = null) { $results = $this->toBase()->pluck($column, $key); - $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; // If the model has a mutator for the requested column, we will spin through // the results and mutate the values so that the mutated version of these @@ -1784,7 +1784,7 @@ public function setModel(Model $model) */ public function qualifyColumn($column) { - $column = $column instanceof Expression ? $query->getGrammar->wrap($column) : $column; + $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; return $this->model->qualifyColumn($column); } From 7b3cdc7a35f554ad3a2cd176098c10203bd40ef7 Mon Sep 17 00:00:00 2001 From: Mior Muhammad Zaki Date: Wed, 8 Mar 2023 13:25:56 +0800 Subject: [PATCH 3/4] wip Signed-off-by: Mior Muhammad Zaki --- src/Illuminate/Database/Eloquent/Builder.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index 28945c8e6ecc..68979863aa74 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -648,7 +648,7 @@ public function sole($columns = ['*']) public function value($column) { if ($result = $this->first([$column])) { - $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; return $result->{Str::afterLast($column, '.')}; } @@ -665,7 +665,7 @@ public function value($column) */ public function soleValue($column) { - $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; return $this->sole([$column])->{Str::afterLast($column, '.')}; } @@ -680,7 +680,7 @@ public function soleValue($column) */ public function valueOrFail($column) { - $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; return $this->firstOrFail([$column])->{Str::afterLast($column, '.')}; } @@ -866,7 +866,7 @@ public function pluck($column, $key = null) { $results = $this->toBase()->pluck($column, $key); - $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; // If the model has a mutator for the requested column, we will spin through // the results and mutate the values so that the mutated version of these @@ -1784,7 +1784,7 @@ public function setModel(Model $model) */ public function qualifyColumn($column) { - $column = $column instanceof Expression ? $query->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; return $this->model->qualifyColumn($column); } From c24a429b4dc2ce70c6772ab3af095948b3bd3eaf Mon Sep 17 00:00:00 2001 From: Mior Muhammad Zaki Date: Wed, 8 Mar 2023 14:09:38 +0800 Subject: [PATCH 4/4] wip Signed-off-by: Mior Muhammad Zaki --- src/Illuminate/Database/Eloquent/Builder.php | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Illuminate/Database/Eloquent/Builder.php b/src/Illuminate/Database/Eloquent/Builder.php index 68979863aa74..c0e17ad1b072 100755 --- a/src/Illuminate/Database/Eloquent/Builder.php +++ b/src/Illuminate/Database/Eloquent/Builder.php @@ -648,7 +648,7 @@ public function sole($columns = ['*']) public function value($column) { if ($result = $this->first([$column])) { - $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; return $result->{Str::afterLast($column, '.')}; } @@ -665,7 +665,7 @@ public function value($column) */ public function soleValue($column) { - $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; return $this->sole([$column])->{Str::afterLast($column, '.')}; } @@ -680,7 +680,7 @@ public function soleValue($column) */ public function valueOrFail($column) { - $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; return $this->firstOrFail([$column])->{Str::afterLast($column, '.')}; } @@ -866,7 +866,7 @@ public function pluck($column, $key = null) { $results = $this->toBase()->pluck($column, $key); - $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; // If the model has a mutator for the requested column, we will spin through // the results and mutate the values so that the mutated version of these @@ -1784,7 +1784,7 @@ public function setModel(Model $model) */ public function qualifyColumn($column) { - $column = $column instanceof Expression ? $this->getGrammar()->wrap($column) : $column; + $column = $column instanceof Expression ? $column->getValue($this->getGrammar()) : $column; return $this->model->qualifyColumn($column); }