gpt4 book ai didi

php - 如何使用 Laravel 迁移安全地回滚 MySql 数据库中的主索引

转载 作者:行者123 更新时间:2023-11-29 03:16:02 25 4
gpt4 key购买 nike

我正在为 Laravel 和 Lumen 使用 Entrust 角色和权限库。尽管由于我的独特情况,我有理由以不同于预期的方式使用它。我需要有多个具有相同角色的用户实例,这些实例由某个外键区分。

假设我希望用户对不同的工作具有相同的角色,或者对不同的工作具有不同的角色,所以我在 role_users 表中添加了一个 job_id 以帮助我过滤一个用户的角色特别的工作..

这只是意味着用户可以是 job1 的管理员和 job2 的管理员。这带来了一个问题,因为委托(delegate)一些如何在 role_users 表上创建 role_id 和 user_id 的主键。

首先,我不认为这是可能的,而且我不明白为什么......这也意味着我不能拥有我想要的相同 role_id 和 user_id 的多个实例。我做了一些研究,发现我可以使用 $table->dropPrimary() 方法删除主键。

我在 up() 方法中执行了此操作,但需要在我的 down 方法中复制该操作。我不能在那里创建主键,因为如果已经存在多个实例,它将引发致命异常。

基本上我需要一种在主键存在的情况下删除主键的方法,这样我就不必在 down 方法中重新创建它。

最佳答案

在这种情况下,您不需要在 down() 中添加任何内容。

我在 down() 中放置内容的通常规则是,当 up() 包含将阻止我的迁移成功回滚的内容时。

在您的情况下,删除主键不会以任何方式影响回滚。

如果你真的需要这个回滚。您可以添加一些脚本来处理表中的重复项并再次应用主键

关于php - 如何使用 Laravel 迁移安全地回滚 MySql 数据库中的主索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56164415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com