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

Laravel migration won't add foreign key with integer type (mysql)

我正在尝试添加一个引用引用 table 中整数主键的外键。 laravel 尝试创建 table 的方式有两个问题,第一个是如果我尝试显式输入外键列整数长度 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');
        });
}

这是供参考的架构 table:

    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 并且参考列在 'user_bans' table 是 10。我在这里做错了什么或解决这个错误的方法吗?

你试过吗?

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

Laravel - Foreign Keys(注意这部分下的粉色框)