A package to cast json fields, each sub-keys is castable
- PHP >= 8.2
- Laravel 10.0
You can install the package via composer:
composer require novius/laravel-json-casted
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Novius\LaravelJsonCasted\Services\JsonCasted;
class Post extends Model {
protected $casts = [
'extras' => JsonCasted::class.':getExtrasCasts',
];
public function getExtrasCasts(): array
{
return [
'date' => 'date:Y-m-d',
];
}
}
namespace App\Casts;
use Novius\LaravelJsonCasted\Services\JsonCasted;
class Extras extends JsonCasted {
protected $casts = [
'date' => 'date:Y-m-d',
];
}
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use App\Casts\Extras;
class Post extends Model {
protected $casts = [
'extras' => Extras::class,
];
}
$model = Post::first();
// $model->extras->date is a now Carbon class
$model->extras->date->lt(now());
Lint your code with Laravel Pint using:
composer run cs-fix
This package is under GNU Affero General Public License v3 or (at your option) any later version.