📜  uuid 包生成器 laravel - PHP (1)

📅  最后修改于: 2023-12-03 15:35:32.926000             🧑  作者: Mango

介绍:使用 UUID 包生成器在 Laravel 中生成唯一标识符

在 Laravel 中使用 UUIDs(通用唯一标识符)代替自增主键可以带来许多好处,例如更好的数据安全性和更易于扩展性。虽然 PHP 自身不支持 UUID,但 Laravel 社区使用了一些已有的包,这些包可以轻松地在 Laravel 中生成 UUID。

安装

要在 Laravel 中使用 UUID 包生成器,需要先安装它。在 Laravel 中,可以使用 Composer 包管理器来安装它。在终端中导航到 Laravel 项目文件夹并运行以下命令:

composer require ramsey/uuid-doctrine

这个命令将安装发行版和包目录,并在 composer.json 文件中添加相应的依赖项和 autoload 映射。

生成 UUID

一旦安装了 UUID 包生成器,可以使用它生成唯一标识符。在 Laravel 中,最简单的方法是使用 Laravel 的服务容器来注入生成器。例如,在控制器中:

use Ramsey\Uuid\Uuid;

class ExampleController extends Controller
{
    public function exampleMethod()
    {
        $uuid = Uuid::uuid4()->toString();
        return view('example-view', ['uuid' => $uuid]);
    }
}

在这个例子中,我们使用 UUID 包生成器的 uuid4() 方法生成一个 UUID,然后将它传递给视图并返回。请注意,我们还使用了 toString() 方法,将 UUID 转换为字符串。

替换模型

要在模型中使用 UUID 代替自增主键,需要使用一些辅助包来扩展 Laravel Eloquent,这些包可以根据需要生成 UUID,提供适当的验证和自然键(如 slug)。这里我们使用 Webpatser/laravel-uuid

use Illuminate\Database\Eloquent\Model;
use Webpatser\Uuid\Uuid;

class ExampleModel extends Model
{
    /**
     * The "booting" method of the model.
     *
     * @return void
     */
    public static function boot()
    {
        parent::boot();

        static::creating(function ($model) {
            if (!$model->{$model->getKeyName()}) {
                $model->{$model->getKeyName()} = (string) Uuid::generate(4);
            }
        });
    }

    /**
     * Indicates if the IDs are auto-incrementing.
     * @var bool
     */
    public $incrementing = false;
}
结论

使用 UUID 包生成器在 Laravel 中生成唯一标识符是一个很好的选择,可以提高数据的安全性和可扩展性。有了这个包,您可以方便地生成 UUID,并使用它们代替自增主键。