Laravel 5.1 迁移错误自增主键

3

我曾经学习过Laravel一段时间,为自己创建了一些基本项目,但今天我试图迁移包含更多整数的表格。但它仍然出现错误。

每个整数都尝试自动递增和成为主键,这可能是一个问题,但我不知道该如何解决。

        Schema::create ('users', function (Blueprint $table)
    {
        $table->increments ('id');
        $table->string ('email')->unique();
        $table->string ('pass',250);
        $table->integer ('tickets',4);
        $table->integer ('tokens',4);
        $table->integer ('in_raffle',4);
        $table->text ('profile',500);
        $table->string ('ip',20);
        $table->integer ('ban',1);
        $table->integer ('notice',1);
        $table->timestamp ('last_login');

    });

有人能告诉我怎么解决这个问题吗?需要编辑哪些内容才能让它正常工作?
非常感谢,祝你有愉快的一天!
链接:https://s28.postimg.org/fh3uaqdct/screen2.jpg
3个回答

6

在所有的integer()中删除秒参数:

$table->integer('tickets');
$table->integer('tokens');
$table->integer('in_raffle');
$table->integer('ban');
$table->integer('notice');

问题是integer()方法的第二个参数是autoIncrement,它被视为布尔值。当你传递的不是false时,Laravel会认为你想让这个整数字段成为auto_increment


谢谢,它有效!你能告诉我如何添加整数的大小吗?因为所有整数现在都设置为int(11),在迁移中添加大小是可能的吗?如果可以,怎么做?谢谢! - Mario
很遗憾,在迁移中无法做到那样。请记住,int的大小与最小或最大值无关,只有在使用zerofill时才真正有用。这是一篇好的文章。https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean - user1669496
你不能这样做。你可以使用这些整数类型:tinyIntegersmallIntegermediumIntegerintegerbigInteger - Alexey Mezenin

1

函数的声明看起来像这样:

public function integer($column, $autoIncrement = false, $unsigned = false)

所以不要加上整数长度,它将正常工作。如果您需要比长度为11更小的整数,可以使用smallIntegermediumInteger,其长度在此处描述。

0

五月

$table->tinyInteger('tickets');
$table->tinyInteger('tokens');
$table->tinyInteger('in_raffle');
$table->boolean('ban')->default(false);
$table->boolean('notice')->default(false);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接