yabhq/ laravel-mint
一组特性、宏和其他辅助工具,以保持您的Laravel应用程序感觉新鲜。
v1.2
2024-04-21 15:31 UTC
Requires
- php: ^8.2|^8.3
- illuminate/support: ^9|^10|^11
- laravel/legacy-factories: ^1.0
Requires (Dev)
- orchestra/testbench: ^9.0
- phpunit/phpunit: ^10.0
README
Laravel的Mint
一组特性、宏和其他辅助工具,以保持您的Laravel应用程序感觉新鲜。
安装
composer require yabhq/laravel-mint
可存档
允许模型根据数据库表上的"archived_at"字段进行存档或取消存档。全局范围在查询模型时自动排除已存档的记录。
use Yab\Mint\Traits\Archivable; class Example extends Model { use Archivable; }
$example->archive(); $example->unarchive(); Example::query(); // Will exclude archived items... Example::withArchived(); // With archived items included...
不可变
标记为"不可变"的模型如果被更新或删除(但不创建)将抛出ImmutableDataException异常。
use Yab\Mint\Traits\Immutable; class Example extends Model { use Immutable; }
// No problem $example = Example::create([ 'field' => 'value' ]); // Throws an exception... $example->update([ 'field' => 'updated' ]);
您还可以通过覆盖模型上的isImmutable()函数来自定义模型不可变的条件
public function isImmutable() { return $this->status === 'closed'; }
UUID模型
通过利用UuidModel特性,轻松地为模型的唯一键使用UUID。
use Yab\Mint\Traits\UuidModel; class Example extends Model { use UuidModel; }
如果您想自定义UUID列的名称,只需在模型类中添加getUuidColumnName函数即可。
public static function getUuidColumnName(): string { return 'my_column_name'; }
货币类型转换
一个自定义转换,用于将货币值以分存储在数据库中,而检索时以十进制值获取。
use Yab\Mint\Casts\Money; class Example extends Model { protected $casts = [ 'price' => Money::class, ]; }
生成别名
创建唯一且不会相互冲突的别名。
use Yab\Mint\Trails\Slugify; class Example extends Model { use Slugify }
默认情况下,Slugify特性使用模型上的name属性。您可以通过覆盖模型上的getSlugKeyName方法来更改此行为。
public static function getSlugKeyName(): string { return 'title'; }
头像
HasAvatar特性允许您轻松支持用户的头像。它甚至内置了Gravatar回退功能!
use Yab\Mint\Trails\HasAvatar; class User extends Model { use HasAvatar; }
您还可以自定义用于检索个人资料的数据库字段
public function getAvatarField() : string { return 'profile_picture'; }
还可以确定用于Gravatar电子邮件地址的字段
public function getEmailField(): string { return 'email'; }