Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel 5.0, migration: how to make integer not a primary key?

I would like to migrate a table with the elements below.

public function up() {
    Schema::create('users', function(Blueprint $table) {
        $table->increments('id');
        $table->integer('LoginID', 9)->unsigned();
        $table->string('username');
        $table->string('email')->unique();
        $table->string('password', 60)->unique();
        $table->rememberToken();
        $table->timestamps();
    });
}

However, I have kept dealing with the error below. Does anyone know how to make integer "LoginID not a primary key so that I can migrate the table below? Any advice appreciated. Thanks in advance.

[Illuminate\Database\QueryException]
SQLSTATE[HY000]: General error: 1 table "users" has more than one primary key (SQL: create table "users" ("id" integer not null primary key autoincrement, "LoginID" integer not null primary key autoincrement, "username" varchar not null, "email" varchar not null, "password" varchar not null, "remember_token" varchar null, "created_at" date time not null, "updated_at" datetime not null))

like image 811
ILoveBaymax Avatar asked Apr 01 '16 22:04

ILoveBaymax


2 Answers

try this

$table->integer('company_tel')->length(10)->unsigned();

or this

$table->integer('company_tel', false, true)->length(10);

see details https://laracasts.com/discuss/channels/general-discussion/why-am-i-getting-a-database-error-on-migration

like image 38
Sharifur Robin Avatar answered Oct 16 '22 17:10

Sharifur Robin


The problem is that you use the function ->integer() with a second param. According to the docs the second parameter expects a boolean to set autoincrement or not: bool $autoIncrement = false).

Try this:

public function up() {
    Schema::create('users', function(Blueprint $table) {
        $table->increments('id');
        $table->integer('LoginID')->unsigned();
        $table->string('username');
        $table->string('email')->unique();
        $table->string('password', 60)->unique();
        $table->rememberToken();
        $table->timestamps();
    });
}
like image 191
Daan Avatar answered Oct 16 '22 15:10

Daan