2020-06-20 00:14:06
在 Laravel 5.6 中集成 UUID 可以通过以下步骤实现,核心流程包括数据表设计、Model 配置及代码复用优化:
1. 数据表设计:指定 UUID 字段在迁移文件中修改主键字段定义,将默认的自增 id 替换为 UUID 类型:
Schema::create('your_table', function (Blueprint $table) { $table->uuid('id')->primary(); // 使用 uuid() 方法并设置为主键 // 其他字段...});在对应的 Eloquent Model 中完成两项核心设置:
class YourModel extends Model{ public $incrementing = false; // 禁用自增行为 protected static function boot() { parent::boot(); static::creating(function ($model) { if (empty($model->id)) { // 仅当 id 为空时生成 $model->id = (string) Str::uuid(); // 使用 Laravel Helper 生成 UUID } }); }}
为避免重复代码,可将 UUID 逻辑提取为 Trait:
trait UsesUuid{ public $incrementing = false; protected static function bootUsesUuid() { static::creating(function ($model) { if (empty($model->getKey())) { // getKey() 兼容非 id 主键 $model->{$model->getKeyName()} = (string) Str::uuid(); } }); }}
通过控制器返回数据时,主键将显示为 UUID 格式:
public function show($id){ return response()->json(YourModel::findOrFail($id));}
通过以上步骤,即可在 Laravel 5.6 中实现完整的 UUID 集成,同时保持代码的简洁性与可维护性。