[英]Nullable column as foreign key in laravel
我在数据库中有customer表。 客户与行业相关联。 由于要求,在创建客户时, industry_id
为null。 稍后它将被更新并添加正确的行业ID。
现在,当我想将此列添加为外键时,它会显示以下错误。
SQLSTATE [HY000]:一般错误:1215无法添加外键约束(SQL:alter table
customers
add constraintcustomers_industry_id_foreign
外键(industry_id
)引用industries
(id
))
我在客户迁移中有以下代码。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCustomersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('customers', function (Blueprint $table) {
$table->bigIncrements('id')->comment="Customer Identifier";
$table->bigInteger('customer_category_id')->unsigned()->comment="Customer Category Identifier";
$table->bigInteger('industry_id')->unsigned()->nullable()->comment="Industry Identifier";
$table->string('email')->unique()->comment="Customer Email";
$table->timestamps();
$table->foreign('industry_id')->references('id')->on('industries');
$table->foreign('customer_category_id')->references('id')->on('customer_categories');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('customers');
}
}
这是行业迁移。
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateIndustriesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('industries', function (Blueprint $table) {
$table->bigIncrements('id')->comment="Industry Indetifier";
$table->string('name')->comment="Industry Name";
$table->boolean('status')->default(true)->comment="Active or Inactive";
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('industries');
}
}
实现我想要的是不可能的? 或者它只是不合逻辑? 如果我能够添加外键,那么我可以利用外键的各种优点。
将行业表中的id(primary_key)更改为唯一键,然后尝试
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.