Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you use a BIGINT as an Auto-Incrementing Primary Key in Laravel 4

I am trying to mimic wordpress' primary key size which is BIGINT(20) but it seems that laravel doesn't have a native function to do this.. I saw a page in the laravel forums and got a code like this:

$table->bigInteger('id')->primary();

but when i try to attach a foreign key to that id during artisan migrate, there is a MYSQL error that is thrown:

[Exception] SQLSTATE[HY000]: General error: 1005 Can't create table 'db.#sql- 1730_15' (errno: 150) (SQL: alter table users add constraint users_role_id_foreign foreign key (role_id) references roles (id)) (Bindings: array ( ))

What is the proper way to do this or where do i get this thing wrong?

thanks!

like image 861
reikyoushin Avatar asked Jul 28 '13 03:07

reikyoushin


2 Answers

You most likely forgot to also set the type of your role_id foreign key as BIGINT(20) as well. This isn't really a Laravel issue, but rather MySQL's.


By the way, Laravel does have a native function to do this:

$this->bigIncrements('id');

This takes care of making it unsigned, auto increment and primary key.

like image 192
rmobis Avatar answered Oct 18 '22 04:10

rmobis


When using bigInteger() also applying it to foreign key in some table, make sure you connect it properly with unsignedBigInteger(),

public function up()
{
        Schema::create('create_this_table_after_users', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('user_id');
           // Other Columns
        });
        Schema::table('create_this_table_after_users', function($table) {
            $table->foreign('user_id')->references('id')->on('users');
            // Other Constraints 
        });
}

Reference Link of the Laravel 4.2 Doc

like image 4
Vipertecpro Avatar answered Oct 18 '22 04:10

Vipertecpro