From a9f5764f4075acd7a824e2d3485c819de3ce6251 Mon Sep 17 00:00:00 2001 From: nick Date: Sat, 22 Jan 2022 19:35:14 +1100 Subject: [PATCH 1/3] updated the model appends property to work with the new Attributes casting method --- .../Database/Eloquent/Concerns/HasAttributes.php | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php index 67e44605eb4c..ec5618b257d4 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php @@ -2,6 +2,7 @@ namespace Illuminate\Database\Eloquent\Concerns; +use BadMethodCallException; use Carbon\CarbonImmutable; use Carbon\CarbonInterface; use DateTimeInterface; @@ -24,6 +25,7 @@ use InvalidArgumentException; use LogicException; use ReflectionClass; +use ReflectionFunction; use ReflectionMethod; use ReflectionNamedType; @@ -609,7 +611,15 @@ public function hasAttributeGetMutator($key) */ protected function mutateAttribute($key, $value) { - return $this->{'get'.Str::studly($key).'Attribute'}($value); + try { + return $this->{'get'.Str::studly($key).'Attribute'}($value); + } catch (\BadMethodCallException $exception) { + if (method_exists($this, Str::studly($key)) && $this->{Str::studly($key)}($value) instanceof Attribute) { + return $this->{Str::studly($key)}; + } + + throw $exception; + } } /** From 67040ca3a55dc8b3b78903f2d00066d5c7d0a87f Mon Sep 17 00:00:00 2001 From: nick Date: Sat, 22 Jan 2022 19:36:02 +1100 Subject: [PATCH 2/3] minor formatting --- src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php index ec5618b257d4..06d13613319c 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php @@ -613,7 +613,7 @@ protected function mutateAttribute($key, $value) { try { return $this->{'get'.Str::studly($key).'Attribute'}($value); - } catch (\BadMethodCallException $exception) { + } catch (BadMethodCallException $exception) { if (method_exists($this, Str::studly($key)) && $this->{Str::studly($key)}($value) instanceof Attribute) { return $this->{Str::studly($key)}; } From 2a2968229952a87bda10a9e74e0501dd8aef4f9c Mon Sep 17 00:00:00 2001 From: nick Date: Sat, 22 Jan 2022 19:45:35 +1100 Subject: [PATCH 3/3] minor formatting --- src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php index 06d13613319c..3fa3e9295838 100644 --- a/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php +++ b/src/Illuminate/Database/Eloquent/Concerns/HasAttributes.php @@ -25,7 +25,6 @@ use InvalidArgumentException; use LogicException; use ReflectionClass; -use ReflectionFunction; use ReflectionMethod; use ReflectionNamedType;