我知道您可以使用 $this->belongs_to()
、$this->has_many()
等轻松定义表关系,但我不知道了解关系表是如何创建的;将两个表绑定(bind)在一起的表(我忘了这个词叫什么)。
假设我正在创建一个用户表。我希望该用户属于某个“角色”。有多个角色,每个角色可以有多个用户。我还需要为此创建一个 roles
表。到目前为止,还不错。
但在阅读文档后,它说我应该在模型中添加 $this->belongs_to()
,而不是迁移本身。何时以及如何创建关系表?如果我创建 roles
和 users
表,并将 $this->belongs_to('roles')
添加到 users
模型,$this->has_many('users')
到roles
模型,会自动创建中间表吗?
最佳答案
创建迁移时,您可以在表上指定外键, 即
public function up()
{
Schema::table('roles', function(Blueprint $table) {
$table->increments('id');
$table->integer('user_id')->unsigned();
//rest of fields then...
$table->foreign('user_id')->references('id')->on('users');
});
}
这将在角色表的 user_id 列上创建一个外键。 外键的好处是,当进行更新或删除时,外键表将自动更新或“级联” 发现很好的描述here
如 Laravel 文档中所述,您还可以使用以下语法指定更新时的级联
$table->foreign('user_id')
->references('id')->on('users')
->onDelete('cascade');
我会尝试比文档更好地解释它,所以请阅读 "Relationships" Eloquent ORM 文档的一部分,看看它是如何完成的。
关于database - 迁移中的 Laravel 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13541057/