yabhq/laravel-mint

一组特性、宏和其他辅助工具,以保持您的Laravel应用程序感觉新鲜。

v1.2 2024-04-21 15:31 UTC

README

Latest Version on Packagist

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';
}