所以我在理解如何制作外键方面没有问题,但我脑子里有些东西可能倒退了。
据我所知 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/