faaren-tech/laravel-custom-uuids

一个提供类似Stripe的uuids的Laravel包

1.1.1 2023-03-31 09:19 UTC

This package is auto-updated.

Last update: 2024-09-30 02:10:39 UTC


README

此包提供与Stripe使用的uuids类似的uuids,以模型为前缀。

开放任务

  • 添加命令以将此字段添加到现有模型

安装

运行以下命令

// Install the package
composer require faaren-tech/laravel-custom-uuids

// Publish relevant stubs for model and migration creation
php artisan custom-uuids:publish-stubs

用法

普通模型

只需继续使用以下命令来创建模型和迁移

  • php artisan make:model <MyModel> 创建新模型
  • php artisan make:model <MyModel> -m 创建新模型和迁移
  • php artisan make:migration <CreateMyModelTable> 创建新迁移类

感谢自定义占位符,生成的类将包含相关的接口和/或方法。

重要:您必须自行实现来自 FaarenTech\LaravelCustomUuids\Interfaces\HasCustomUuidInterfacepublic function getUuidPrefix(): string

用户模型和可认证模型

那些继承自 Illuminate\Foundation\Auth\User 的模型,例如 App\User 模型,您需要进行一些额外的工作。

  • 将父类更改为 FaarenTech\LaravelCustomUuids\Models\UuidModel
  • 添加以下接口
    • Illuminate\Contracts\Auth\Access\Authorizable
    • Illuminate\Contracts\Auth\Authenticatable
    • Illuminate\Contracts\Auth\CanResetPassword
  • 将以下特质添加到您的模型中
    • Illuminate\Auth\Authenticatable
    • Illuminate\Foundation\Auth\Access\Authorizable
    • Illuminate\Auth\Passwords\CanResetPassword
    • Illuminate\Auth\MustVerifyEmail

可能的实现如下所示

<?php

namespace App\Models;

use FaarenTech\LaravelCustomUuids\Models\UuidModel;
use Illuminate\Auth\Passwords\CanResetPassword;
use Illuminate\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\Access\Authorizable;
use Illuminate\Notifications\Notifiable;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Auth\Authenticatable;
use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract;
use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract;
use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract;

class User extends UuidModel implements
    AuthenticatableContract,
    AuthorizableContract,
    CanResetPasswordContract,
    HasCustomUuidInterface
{
    use Authenticatable, 
        Authorizable, 
        CanResetPassword, 
        MustVerifyEmail, 
        HasApiTokens, 
        HasFactory, 
        Notifiable;
        
    public function getUuidPrefix(): string
    {
        return "user";
    }
}

自定义占位符

当然,您可以自由地自定义提供的占位符。它们存储在 */stubs 中。