Laravel迁移关系

时间:2019-06-02 18:55:28

标签: php laravel

我在laravel迁移方面遇到问题。我想在2个表之间设置一个关系。例如,我有表用户和表产品,在产品表中有user_owner列,因此我可以这样指定用户:

用户表

$table->bigIncrements('id');

产品表

$table->integer('user_owner');
$table->foreign('user_owner')->references('id')->on('users');

但是每次我要迁移此表时,都会出现类似以下错误:

SQLSTATE[HY000]: General error: 1005 Can't create table `ecomet_html`.`#sql-3c38_b9` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `products` add constraint `products_store_id_foreign` foreign key (`store_id`) references `stores` (`id`))

我为什么做错了?

2 个答案:

答案 0 :(得分:0)

  1. 在用户表(迁移.php文件)之前检查产品表是否按字母顺序排列。 Artisan正在一步一步地将它们带走,可能是在用户使用产品之前,然后数据库无法检测到用户表,因为它尚未创建。
  2. 检查密钥格式!用户和产品的两个ID的长度不同。试试(产品表):$table->bigInteger('user_owner'); or $table->unsignedBigInteger('user_owner'); or $table->bigInteger('user_owner')->unsigned();

  3. 另一个建议是:$table->foreign('user_owner')->references('id')->on('users')->onDelete('cascade');,数据库引擎可能需要onDelete参数

答案 1 :(得分:0)

尝试一下。

从以下位置更新您的user_owner:

    $table->integer('user_owner');

收件人:

$table->unsignedBigInteger('user_owner');