You need to enable JavaScript to run this app. 如何在Laravel中生成不带连字符的UUID?
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel中生成不带连字符的UUID?

Laravel 生成无连字符UUID的实现方案

Laravel默认通过内置工具生成的UUID为带4个连字符的标准格式,例如51a0cb84-8b3d-43c4-bfd4-8fcef1f360d4,若需要输出无任何连字符的32位格式(如51a0cb848b3d43c4bfd48fcef1f360d4),可通过以下方案实现:

推荐方案:通过UUID原生方法直接获取

Laravel底层UUID生成逻辑本身提供了直接提取无连字符16进制值的方法,无需额外做字符串处理,性能和准确性都更优:

use Illuminate\Support\Str;

// 直接生成无连字符的UUID
$uuidWithoutHyphen = Str::uuid()->getHex()->toString();
  • getHex()方法会直接返回UUID的原始16进制存储值,输出即为不带任何连字符的32位字符串,和标准UUID的字符内容完全一致,仅移除了格式化用的连字符。

备选方案:对标准UUID做字符串替换

如果需要兼容旧版本逻辑,也可以直接对生成的带连字符UUID做连字符移除操作:

use Illuminate\Support\Str;

// 方法1:直接用PHP原生字符串替换
$uuidWithoutHyphen = str_replace('-', '', Str::uuid()->toString());

// 方法2:用Laravel字符串辅助类实现
$uuidWithoutHyphen = Str::of(Str::uuid()->toString())->remove('-');

适配Eloquent模型UUID主键场景

如果是在模型中使用HasUuids trait自动生成UUID作为主键,需要默认输出无连字符格式的话,可以重写模型的generateUuid方法:

namespace App\Models;

use Illuminate\Database\Eloquent\Concerns\HasUuids;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class TestModel extends Model
{
    use HasUuids;

    // 重写默认UUID生成逻辑
    protected function generateUuid()
    {
        return Str::uuid()->getHex()->toString();
    }
}

内容的提问来源于stack exchange,提问作者Amr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.08 00:15:05