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:clear、config:clear、route:clear这些命令都跑过好几次 - 切换PHP版本:从PHP 8.2换到8.4测试,问题依然存在
环境和配置细节
本地环境
- 系统:Mac OS Tahoe 26.1
- PHP版本:8.4(测试过8.2)
- Laravel版本:11
- 数据库:SQL Server
数据库字段定义(以User表的id为例)
| Column_name | Type | Computed | Length | Nullable |
|---|---|---|---|---|
| id | uniqueidentifier | no | 16 | no |
模型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兼容问题?求指点方向!




