如何创建数据透视表 laravel?
Posted
技术标签:
【中文标题】如何创建数据透视表 laravel?【英文标题】:How to create a pivot table laravel? 【发布时间】:2020-02-09 18:25:00 【问题描述】:我有一个简单的博客,其中有一个包含标题和标签的帖子,现在我希望用户能够添加标签,根据我需要使用名称约定创建数据透视表的文档。
phpMyAdmin 上的帖子表
id title
1 Death
2 Love
PHPMyAdmin 上的标签表
id name
这是我创建数据透视表的迁移
<?php
class CreatePostTagTable extends Migration
public function up()
Schema::create('post_tag', function (Blueprint $table)
$table->bigIncrements('id');
$table->integer('post_id')->unsigned();
$table->foreign('post_id')->references('id')->on('posts');
$table->integer('tag_id')->unsigned();
$table->foreign('tag_id')->references('id')->on('tags');
);
public function down()
Schema::dropIfExists('post_tag');
现在,当我运行 PHP artisan migrate
时,出现以下错误。
SQLSTATE[HY000]: General error: 1005 Can't create table `royalad`.`#sql-ee8_307` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `post_tag` add constraint `post_tag_post_id_foreign` foreign key (`post_id`) references `posts` (`id`))
我的代码做错了什么?
【问题讨论】:
【参考方案1】:在您的tag_id
中也将$table->integer('post_id')->unsigned();
更改为$table->bigInteger('post_id')->unsigned();
。
【讨论】:
因为外键必须与本地键匹配格式 顺便说一句,创建数据透视表时根本不需要外键 非常感谢解决了这个问题,他们应该将此添加到文档中,对于新手会有用 我们一直向文档发送拉取请求,但他们拒绝了它¯\_(ツ)_/¯以上是关于如何创建数据透视表 laravel?的主要内容,如果未能解决你的问题,请参考以下文章