ILoveBaymax
ILoveBaymax

Reputation: 267

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))

Upvotes: 9

Views: 15183

Answers (4)

Madhav Singh Rajput
Madhav Singh Rajput

Reputation: 19

Try this

$table->increments('id', true);

This will auto increments the id without creating its primary key.

Upvotes: 0

Daan
Daan

Reputation: 7925

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();
    });
}

Upvotes: 11

Sharifur Robin
Sharifur Robin

Reputation: 325

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

Upvotes: 4

Mateusz Sip
Mateusz Sip

Reputation: 1280

Shouldn't you call

$table->primary('id');

to mark id column as a primary key?

Upvotes: -1

Related Questions