我正在用Laravel开发一个Web应用程序。我的数据库引擎是Microsoft SQL Server。对于一些数据,我更喜欢生成uuid。当我使用Windows运行Laravel应用程序时,uuid格式是正确的:
但当我在Linux下运行Laravel应用程序,并使用相同的数据库时,uuid格式是这样的:
我不知道问题出在哪里......你有办法吗?谢谢.其目标是在Laravel应用程序在Windows和Linux下运行时检索相同的格式。
pgky5nke1#
在config/database.php中添加以下内容
config/database.php
'options' => [ PDO::DBLIB_ATTR_STRINGIFY_UNIQUEIDENTIFIER => true, ],
字符串
然后优化:清除您的应用程序
6tqwzwtp2#
在Microsoft SQL Server中,UUID通常使用UNIQUEIDENTIFIER数据类型存储,该数据类型是一个16字节的二进制值。从数据库获取此值时,驱动程序可能会根据平台以不同的方式表示此二进制数据。
要解决这个问题并在两个平台上以一致的格式检索UUID,可以在查询数据库时显式地将UUID转换为它的字符串表示形式。
SELECT CONVERT(NVARCHAR(36), [YourUUIDColumn]) AS uuid_string FROM [YourTableName]
字符串在你的Laravel模型中,你可以使用访问器来处理UUID转换:
public function getUuidAttribute($value) { return strtoupper(bin2hex($value)); }
型所以你可以在Laravel中使用$model->uuid访问它并获得预期的字符串格式。
$model->uuid
2条答案
按热度按时间pgky5nke1#
在
config/database.php
中添加以下内容字符串
然后优化:清除您的应用程序
6tqwzwtp2#
在Microsoft SQL Server中,UUID通常使用UNIQUEIDENTIFIER数据类型存储,该数据类型是一个16字节的二进制值。从数据库获取此值时,驱动程序可能会根据平台以不同的方式表示此二进制数据。
要解决这个问题并在两个平台上以一致的格式检索UUID,可以在查询数据库时显式地将UUID转换为它的字符串表示形式。
字符串
在你的Laravel模型中,你可以使用访问器来处理UUID转换:
型
所以你可以在Laravel中使用
$model->uuid
访问它并获得预期的字符串格式。