mr-feek / eloquent-null-casts
当模型属性为null且在casts数组中列出时,将进行类型转换。与默认的Eloquent不同。
v0.1
2020-04-22 21:16 UTC
Requires
- php: ^7.1
- illuminate/database: ^5.8|^6.0|^7.0
- illuminate/support: ^5.8|^6.0|^7.0
Requires (Dev)
- orchestra/testbench: ^3.8|^4.0|^5.0
- phpunit/phpunit: ^8.0
This package is auto-updated.
Last update: 2024-09-11 03:02:57 UTC
README
默认情况下,Laravel不允许将casts
数组中列出的属性null值进行类型转换。这并不总是期望的,因为有时你希望确保属性始终为布尔值。此包提供了一个简单的特质,可以在每个模型的基础上覆盖此行为。不一定总是可行地运行迁移以不再允许数据库中的null值。
安装
您可以通过composer安装此包
composer require mr-feek/eloquent-null-casts
使用方法
在PHP中,我们无法在应用了特质的类中覆盖特质的属性,因此我们有两种实现选择。
第一个选项是使用CastsNullAttributes
特质,并在构造函数中定义casts。
<?php declare(strict_types=1); namespace MrFeek\EloquentNullCasts\Tests\data; use Illuminate\Database\Eloquent\Model; use MrFeek\EloquentNullCasts\CastsNullAttributes; final class User extends Model { use CastsNullAttributes; public function __construct(array $attributes = []) { parent::__construct($attributes); $this->casts = [ 'deleted' => 'boolean', ]; } }
另一个选项是使用继承来实现CastsNullAtrributes
特质,并继续按Eloquent通常的方式在行内定义casts。
<?php declare(strict_types=1); namespace MrFeek\EloquentNullCasts\Tests\data; use Illuminate\Database\Eloquent\Model; use MrFeek\EloquentNullCasts\CastsNullAttributesModel; final class User extends CastsNullAttributesModel { protected $casts = [ 'deleted' => 'boolean', ]; }
在这两种情况下,如果deleted
的实际值为null,它实际上会被转换为布尔值(false),以满足后续的类型提示。
测试
composer test
变更日志
请参阅CHANGELOG获取更多关于最近更改的信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件fpm5022@gmail.com而不是使用问题跟踪器。
致谢
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。
Laravel Package Boilerplate
此包是使用Laravel Package Boilerplate生成的。