php - 确保我在 Laravel 5 中获得了正确的外键语法

标签 php mysql sql laravel

所以我在理解如何制作外键方面没有问题,但我脑子里有些东西可能倒退了。

据我所知 documentation定义外键时,

$table->foreign('user_id')
      ->references('id')->on('users')
      ->onDelete('cascade');

这里的 onDelete 引用了这个,它可以是你在两者之间创建的外键。一个想法的例子是你有用户表和一个帖子表。因此,您的帖子表将包含(为简单起见)。

当我在这里阅读外键语法时,当我删除一个帖子时,它会级联删除与其相关的所有内容。但这是倒退?我是否想在用户表上定义一个级联删除规则,这样如果您删除一个用户,那么您将删除与该用户相关的所有内容。

话又说回来,如果有一条规则说如果你删除许多帖子中的一个,然后删除用户,那将是愚蠢的。有人可以为我澄清一下吗?如果实际上有一种方法可以在父关系(1:N 中的 1)上定义此规则,我将如何去做?

最佳答案

您的想法是有道理的,特别是因为您只考虑了两个表。 on delete 语句描述了当引用的用户行被删除时 post 表中的列会发生什么情况。

但是,许多表可能具有对 user_id 的外键引用。而且,每个人都可以用不同的方式对待。放之四海而皆准不是正确的方法。因此,将此信息存储在外键端而不是主键中确实有意义。

关于php - 确保我在 Laravel 5 中获得了正确的外键语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808143/

相关文章:

php - 使用javascript中的get将数据发送到iframe

php - 我可以在数据库中保存信用卡密码吗?

php - 将 WooCommerce 订单的总订单项目量保存为自定义元数据

php - 迁移后无法访问 wordpress 登录页面

mysql - 如何计算两个日期之间的天数,

mysql - 在mysql查询中找到多行的最大列集

php - 如何将文本转换为\x 代码?

java - JDBC 访问被拒绝错误

mysql - sql 获取在特定日期和时间未预订的所有可用人员

mysql - 防止在不使用索引的情况下插入重复项