jn-jairo / laravel-eloquent-cast
Laravel Eloquent 类型转换
v3.0.1
2024-03-14 23:54 UTC
Requires
- php: ^8.1
- illuminate/support: ^8.83|^9.0|^10.0|^11.0
- jn-jairo/laravel-cast: ^2.0.1
Requires (Dev)
- orchestra/testbench: ^6.24|^7.0|^8.0|^9.0
- pestphp/pest: ^1.22|^2.34
- php-decimal/php-decimal: ^1.1
README
Laravel Eloquent 类型转换
此包通过 jn-jairo/laravel-cast 包扩展了 Laravel 内置的 属性类型转换。
版本兼容性
安装
您可以通过 composer 安装此包
composer require jn-jairo/laravel-eloquent-cast
使用方法
在 \Illuminate\Database\Eloquent\Model
中使用特质 \JnJairo\Laravel\EloquentCast\HasAttributesCast
。在模型的 $casts
属性中,将属性名作为键,类型:格式作为值。
<?php namespace App; use Illuminate\Database\Eloquent\Model; use JnJairo\Laravel\EloquentCast\HasAttributesCast; class Foo extends Model { use HasAttributesCast; protected $casts = [ 'uuid' => 'uuid', 'is_admin' => 'boolean', 'created_at' => 'datetime:Y-m-d H:i:s', ]; }
在获取器中对 PHP
类型进行转换,并/或添加后缀,在设置器中对 数据库
类型进行转换,在序列化为 数组
/json
时对 json
类型进行转换。
示例
$foo = new Foo(); $foo->uuid = '72684d25-b173-468d-8d45-2a10b2cc3e9f'; $foo->is_admin = 1; $foo->created_at = '2000-01-01 00:00:00'; print_r(gettype($foo->uuid)); // string print_r(get_class($foo->uuid_)); // Ramsey\Uuid\Uuid var_dump($foo->is_admin); // bool(true) print_r($foo->created_at); Illuminate\Support\Carbon Object ( [date] => 2000-01-01 00:00:00.000000 [timezone_type] => 3 [timezone] => UTC )
配置
将配置发布到 config/eloquent-cast.php
。
php artisan vendor:publish --provider=JnJairo\\Laravel\\EloquentCast\\EloquentCastServiceProvider
在默认配置中,属性在获取器中对 PHP
类型进行转换并添加 _
后缀,除了类型 uuid
,它仅使用 _
后缀进行转换,因为直接在获取器中对主键/外键进行转换会破坏 Eloquent 模型之间的关系。
许可证
MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件。