Skip to content

Commit d80fc14

Browse files
committed
Use isAbstractClassCast in DataCollectionEloquentCast for easy override
1 parent fee5f63 commit d80fc14

File tree

1 file changed

+9
-8
lines changed

1 file changed

+9
-8
lines changed

src/Support/EloquentCasts/DataCollectionEloquentCast.php

+9-8
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,10 @@ public function get($model, string $key, $value, array $attributes): ?DataCollec
4040

4141
$data = json_decode($value, true, flags: JSON_THROW_ON_ERROR);
4242

43-
$dataClass = $this->dataConfig->getDataClass($this->dataClass);
43+
$isAbstractClassCast = $this->isAbstractClassCast();
4444

45-
$data = array_map(function (array $item) use ($dataClass) {
46-
if ($dataClass->isAbstract && $dataClass->transformable) {
45+
$data = array_map(function (array $item) use ($isAbstractClassCast) {
46+
if ($isAbstractClassCast) {
4747
$morphedClass = $this->dataConfig->morphMap->getMorphedDataClass($item['type']) ?? $item['type'];
4848

4949
return $morphedClass::from($item['data']);
@@ -73,10 +73,10 @@ public function set($model, string $key, $value, array $attributes): ?string
7373
throw CannotCastData::shouldBeArray($model::class, $key);
7474
}
7575

76-
$dataClass = $this->dataConfig->getDataClass($this->dataClass);
76+
$isAbstractClassCast = $this->isAbstractClassCast();
7777

78-
$data = array_map(function (array|BaseData $item) use ($dataClass) {
79-
if ($dataClass->isAbstract && $item instanceof TransformableData) {
78+
$data = array_map(function (array|BaseData $item) use ($isAbstractClassCast) {
79+
if ($isAbstractClassCast && $item instanceof TransformableData) {
8080
$class = get_class($item);
8181

8282
return [
@@ -90,7 +90,7 @@ public function set($model, string $key, $value, array $attributes): ?string
9090
: $item;
9191
}, $value);
9292

93-
if ($dataClass->isAbstract) {
93+
if ($isAbstractClassCast) {
9494
return json_encode($data);
9595
}
9696

@@ -107,6 +107,7 @@ public function set($model, string $key, $value, array $attributes): ?string
107107

108108
protected function isAbstractClassCast(): bool
109109
{
110-
return $this->dataConfig->getDataClass($this->dataClass)->isAbstract;
110+
$dataClass = $this->dataConfig->getDataClass($this->dataClass);
111+
return $dataClass->isAbstract && $dataClass->transformable;
111112
}
112113
}

0 commit comments

Comments
 (0)