首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Laravel关系orm时UUID二进制(16)的问题

问使用Laravel关系orm时UUID二进制(16)的问题
EN

Stack Overflow用户
提问于 2021-11-05 17:04:49
回答 1查看 430关注 0票数 0

我使用uuid作为帐户表的主键,它与角色表有很多关系。我在数据库中将uuid存储为二进制(16),这是由于我在mariadb中创建了一个名为UuidToBin的函数,将uuid字符串转换为二进制(16),当我想获得uuid时,我使用另一个函数名UuidFromBin将uuid从二进制(16)转换成字符串,后面跟着本文:https://docs.w3cub.com/mariadb/guiduuid-performance/index。问题是,当我使用laravel雄辩关系时,我无法提取数据,因为它自动传递帐户表的主键值,与角色表连接查询,而不是首先调用将uuid转换为二进制(16)的函数,这样mariadb就可以进行比较。代码关系:

**

代码语言:javascript
复制
public function roles () : BelongsToMany
{
    return $this->belongsToMany(Role::class, 'account_role',
                                'uuid_account', 'id_role');
}

**查询laravel执行:

代码语言:javascript
复制
 select `role`.`id` from `role` inner join `account_role` on `role`.`id` = `account_role`.`id_role` 
    where `account_role`.`uuid_account` = '94cb6c01-3c6d-44fe-b40f-e798bb25d972'

我想要的查询:

代码语言:javascript
复制
    select `role`.`id` from `role` inner join `account_role` on `role`.`id` = `account_role`.`id_role` 
where `account_role`.`uuid_account` = UuidToBin('94cb6c01-3c6d-44fe-b40f-e798bb25d972')

如果有人知道如何修复,或者有更好的方法使用uuid,请告诉。非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-11-06 20:09:13

不久,MariaDB将有一个名为"UUID“的数据类型,它隐藏了UUID的打包/解压。

https://jira.mariadb.org/browse/MDEV-26664

现在在MariaDB 10.7中对它进行实验,或者等待它成为“通用可用性”。

我的已经更新,提到了10.7,并给出了一些迁移的提示。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69856817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档