确保我在 laravel 5 中获得了正确的外键语法
Posted
技术标签:
【中文标题】确保我在 laravel 5 中获得了正确的外键语法【英文标题】:Making sure I got foreign key syntax right in laravel 5 【发布时间】:2015-12-24 19:38:57 【问题描述】:所以我理解如何制作外键没有问题,但我的脑海中可能会出现一些倒退的小事。
据我所知,当您定义外键时,我可以从 documentation 中读取,
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
这里的 onDelete 引用了这个,这将是您在其间创建外键的任何内容。一个思考的例子是你有用户表和一个帖子表。因此,您的 post 表将包含(为简单起见)。
当我在这里阅读外键语法时,当我删除帖子时,它会级联删除与之相关的所有内容。但这是倒退吗?我想在用户表上定义一个级联删除规则,这样如果您删除一个用户,那么您会删除与该用户相关的所有内容。
再一次,如果您删除许多帖子中的 1 个,然后删除用户,那将是愚蠢的。有人可以为我澄清一下吗,如果事实上有一种方法可以在父关系(1 比 1:N)上定义此规则,我将如何去做?
【问题讨论】:
【参考方案1】:你的想法是有道理的,特别是因为你只考虑两张桌子。 on delete
语句描述了当引用的用户行被删除时,post
表中的列会发生什么。
但是,许多表可能具有对user_id
的外键引用。而且,每个人都可以以不同的方式对待。一刀切不是万能的。因此,将这些信息存储在外键端而不是主键端确实很有意义。
【讨论】:
好的,只是为了解决这个问题。如果我有以下表格:user以上是关于确保我在 laravel 5 中获得了正确的外键语法的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 迁移:无法添加 char 数据类型的外键