How to use nullable in foregin in Laravel?

myS*_*Sun 2 migration laravel laravel-5

I create migration in laravel 5.6.

I need add user information if the user was logged in my website else add 0 in column.

My code is:

$table->integer('user_id')->default(0);
$table->foreign('user_id')->references('id')->on('users');
Run Code Online (Sandbox Code Playgroud)

But aftre run migrate show this error:

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint  
Run Code Online (Sandbox Code Playgroud)

I need add default 0 or null in column or add user_id in column if the user was logged in my website.

How to issue this problem?

Ale*_*nin 5

你需要做到这unsigned一点并且nullable。此外,最好将创建列和添加外键逻辑分开以避免类似的错误:

Schema::create('table_name', function (Blueprint $table) {
    $table->unsignedInteger('user_id')->nullable();
});

Schema::table('table_name', function (Blueprint $table) {
    $table->foreign('user_id')->references('id')->on('users');
});
Run Code Online (Sandbox Code Playgroud)