Laravel迁移不会添加整数类型的外键(mysql)

时间:2015-01-16 02:11:21

标签: php mysql database laravel laravel-4

我试图在引用表中添加引用整数主键的foregin键。我正在尝试创建表的方式面临两个问题,第一个是如果我尝试显式输入外键列的整数长度为11以匹配引用列,它认为我希望此列为首要的关键?我收到错误:

"Incorrect table definition; there can only be one auto column and it must be defined as a key"

即使我明确说明主键是' id'专栏我得到这个错误。以下是我用来产生此错误的代码:

    public function up()
{
    Schema::create('ip_bans', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('ip_address', 255);
            $table->integer('ban_id', 11);
            $table->primary('id');
            $table->foreign('ban_id')->references('id')->on('user_bans')->onDelete('set null');
        });
}

以下是参考表的架构:

    public function up()
{
    Schema::create('user_bans', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('reason');
            $table->string('banned_user', 16);
            $table->timestamps();
            $table->timestamp('ban_end');
            $table->foreign('banned_user')->references('username')->on('users')->onDelete('cascade');
        });
}

如果我从外键列中删除显式整数长度11,我将无法创建外键,因为列不匹配,因为列的长度为11,参考列位于&#39 ; user_bans'表格是10.我在这里做错了什么或绕过这个错误吗?

1 个答案:

答案 0 :(得分:1)

你试过这个吗?

$table->integer('ban_id', 11)->unsigned;

Laravel - Foreign Keys(请注意本节下的粉红色方框)