<?php namespace App\Casts; use Illuminate\Contracts\Database\Eloquent\CastsAttributes; use Illuminate\Support\Collection; class CollectionOrNull implements CastsAttributes { /** * Cast the given value. * * @param \Illuminate\Database\Eloquent\Model $model * @param string $key * @param mixed $value * @param array $attributes * @return Collection */ public function get($model,string $key,$value,array $attributes): Collection { return collect(json_decode($value, true)); } /** * Prepare the given value for storage. * * @param Model $model * @param string $key * @param mixed $value * @param array $attributes * @return string|null */ public function set($model,string $key,$value,array $attributes): ?string { return ($value->count()) ? json_encode($value) : NULL; } }