如何在laravel中使默认值为null

时间:2016-11-23 21:57:13

标签: laravel laravel-5

我正在laravel中创建注册表单,首先我创建了迁移

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('first_name');
            $table->string('last_name');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

我想首先注册没有first_name和last_name的名称,电子邮件和密码,但是当我点击注册时,它给我一个错误,即first_name和last_name没有默认值..所以如何使默认值为null,因为我想要稍后更新这些列。

7 个答案:

答案 0 :(得分:7)

$table->string('first_name')->default('DEFAULT');

编辑:如果默认值应为null,则改为使其可为空。

$table->string('first_name')->nullable();

答案 1 :(得分:2)

我正在 Laravel 中制作注册表单,首先我创建了迁移 如果您想要一个默认值而不是 NULL,您可以在迁移模式中执行以下操作:

<块引用>
$table->string('name')->nullable();

$table->string('name')->nullable()->default('NULL');

$table->string('name')->nullable()->default(NULL);

$table->string('name')->nullable()->default();

答案 2 :(得分:2)

您可以将 first_namelast_name 设为 nullable

<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('first_name')->nullable();
            $table->string('last_name')->nullable();
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }
}

当您在字段上使用 nullable() 方法时,该字段将默认为 NULL。

答案 3 :(得分:1)

在Laravel 5.8中,您可以按照下面的迁移脚本进行尝试;

public function up()
{
    if (Schema::hasTable('table_name')) {
        Schema::table('table_name', function (Blueprint $table) {
            $table->string('column_name')->nullable();
        });
    }
}

参考:https://laravel.com/docs/5.8/migrations

答案 4 :(得分:1)

你想要 default() 和 nullable() 值

<块引用>
$table->string('name')->nullable()->default(' ');

$table->string('first_name')->nullable()->default(' ');

$table->string('last_name')->nullable()->default(' ');

答案 5 :(得分:0)

->default('NULL')->nullable(true)

凭经验...

答案 6 :(得分:0)

根据Laravel 8,有两种简单的解决方案。

  1. 如果要使用默认值而不是NULL,可以在迁移模式中执行以下操作:

    $table->string('total')->default('0');

这意味着默认值为0

  1. 如果要使用NULL值,可以在架构中执行以下操作: $table->string('total')->nullable();

祝您编程愉快!