在laravel 5.0中迁移表时出现外键错误

时间:2015-12-28 06:12:41

标签: sql laravel laravel-5 foreign-keys laravel-migrations

当我尝试在我的迁移文件中创建外键时,我在运行migrate命令时遇到错误。在订单表中,我将userID作为forign键,因此我收到此错误

http://i.stack.imgur.com/1voZh.png

2 个答案:

答案 0 :(得分:2)

您需要对外键使用完全相同的类型。在users中你有:

$table->increments('id');

所以它是unsigned int,所以在order而不是:

$table->integer('userID');

(signed int)你需要使用:

$table->integer('userID')->unsigned();

(unsigned int)使它工作。

答案 1 :(得分:0)

或者您可以按照以下步骤解决问题。

在您的用户模型中,编写此代码以关联订单。

public function orders(){
    return $this->hasMany('App\Order');
}

你的"命令"表格迁移将是这样的。

Schema::create('orders', function (Blueprint $table) {
    $table->increments('id');
    $table->text('extra_detail');
    $table->integer('user_id');
});

在您的订单模型中,编写此代码以关联用户。

public function user(){
    return $this->belongsTo('App\User');
}

您的用户"表格迁移将是这样的。

Schema::create('users', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('email')->unique();
});