stescacom / laravel-uuid-database-queue
这使Laravel能够使用UUID作为作业主键,并允许适当的交互。
Requires
- php: >=7.3
- doctrine/dbal: ^3.1
- laravel/framework: ^8.0
This package is not auto-updated.
Last update: 2024-09-24 06:56:21 UTC
README
问题:使用MySQL时,如果将
id的数据类型设置为CHAR(36)且插入记录时未设置值,则添加作业会抛出错误。
此包提供了服务提供者和必要的类,允许您使用UUID作为主键插入记录。UUID是有序的,并使用Laravel的Str::orderedUuid()。
安装包
要安装此包,请使用以下命令
composer require stescacom/laravel-uuid-database-queue
全新安装Laravel
如果您有一个全新的Laravel项目,您需要使用以下Laravel命令创建jobs表的迁移。
php artisan queue:table
然后打开包含create_jobs_table的创建文件,并做出以下更改
Schema::create('jobs', function (Blueprint $table) {
// $table->bigIncrements('id'); // remove this line
$table->uuid('id')->primary(); // add this line
$table->string('queue')->index();
$table->longText('payload');
$table->unsignedTinyInteger('attempts');
$table->unsignedInteger('reserved_at')->nullable();
$table->unsignedInteger('available_at');
$table->unsignedInteger('created_at');
});
从运行迁移部分继续
已迁移作业表的现有项目
在添加服务提供者之前,请使用
php artisan migrate:status检查是否可以看到迁移2021_10_24_161222_change_id_column_in_jobs_table。如果您看到了,请跳转到运行迁移。
如果您已经运行了迁移并且表已存在于您的数据库中,您需要首先注册包的服务提供者。打开项目的config/app.php文件,并将以下行添加到providers数组中。
Stescacom\LaravelUuidDatabaseQueue\LaravelUuidDatabaseQueueProvider::class
之后运行迁移。
运行迁移
现在迁移已全部设置就绪。使用以下命令
php artisan migrate
设置服务提供者
最后一步是将Illuminate\Queue\QueueServiceProvider::class替换为Stescacom\LaravelUuidDatabaseQueue\QueueServiceProvider::class,打开config/app.php文件。删除或注释掉providers数组中的Illuminate\Queue\QueueServiceProvider::class行,并添加Stescacom\LaravelUuidDatabaseQueue\QueueServiceProvider::class。
您已经设置好了...