diff --git a/src/Illuminate/Database/Eloquent/Casts/AsCollection.php b/src/Illuminate/Database/Eloquent/Casts/AsCollection.php index c2d567b504f7..7e65e9998a4b 100644 --- a/src/Illuminate/Database/Eloquent/Casts/AsCollection.php +++ b/src/Illuminate/Database/Eloquent/Casts/AsCollection.php @@ -19,11 +19,15 @@ public static function castUsing(array $arguments) return new class implements CastsAttributes { public function get($model, $key, $value, $attributes) { - return isset($attributes[$key]) ? new Collection(json_decode($attributes[$key], true)) : null; + return new Collection(isset($attributes[$key]) ? json_decode($attributes[$key], true) : []); } public function set($model, $key, $value, $attributes) { + if (is_null($value) || ($value instanceof Collection && $value->isEmpty())) { + return [$key => null]; + } + return [$key => json_encode($value)]; } };