You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Mac环境下Laravel连接SQL Server读取UUID字段出现乱码格式的问题求助

Mac环境下Laravel连接SQL Server读取UUID字段出现乱码格式的问题求助

各位大佬,我最近碰到一个特别头疼的问题,折腾好几天都没搞定,想请大家帮忙分析下!

问题现象

在我的Mac(Tahoe 26.1系统)环境里,用Laravel 11连接SQL Server数据库时,所有UUID类型的字段读取出来全是乱码格式:

  • 数据库里存的是正常的UUID字符串:944CC79D-5980-4587-8A52-000A2F11D7D1
  • 但在php artisan tinker里读取出来变成了二进制乱码:b"ØÃLöÇYçEèR\0\n/\x11ÎÐ"
  • 不止User表,所有带UUID字段的表都出现这个问题

之前在Windows环境下运行完全正常,UUID显示和传递都没问题,而且同组同事的Mac环境也没这个情况,这就太诡异了——我实在搞不懂为什么只有我的Mac会这样...

已经尝试过的排查操作

  • 在模型中添加UUID/字符串类型转换:试过在模型的$casts里加上'id' => 'uuid'或者'id' => 'string',完全没用
  • 清理所有Laravel缓存:php artisan cache:clearconfig:clearroute:clear这些命令都跑过好几次
  • 切换PHP版本:从PHP 8.2换到8.4测试,问题依然存在

环境和配置细节

本地环境

  • 系统:Mac OS Tahoe 26.1
  • PHP版本:8.4(测试过8.2)
  • Laravel版本:11
  • 数据库:SQL Server

数据库字段定义(以User表的id为例)

Column_nameTypeComputedLengthNullable
iduniqueidentifierno16no

模型Cast配置(之前的基础配置,后来加过id的转换)

protected $casts = [
    'email_verified_at' => 'datetime',
    // 尝试添加的转换,无效
    // 'id' => 'uuid',
];

Tinker控制台输出示例

$ php artisan tinker
Psy Shell v0.12.7 (PHP 8.2.29 — cli) by Justin Hileman
> User::first()
[!] Aliasing 'User' to 'App\Models\User' for this Tinker session.
= App\Models\User {#6624
    id: b"ØÃLöÇYçEèR\0\n/\x11ÎÐ",
    // 其他字段内容正常显示
}

现在我就想让UUID能正常显示和传递,不要变成这种乱码的二进制格式,有没有大佬遇到过类似的Mac+SQL Server的UUID兼容问题?求指点方向!

火山引擎 最新活动