Laravel 5 — Присваивает полям значение null при создании таблицы

#php #laravel #laravel-5.8

#php #laravel #laravel-5.8

Вопрос:

У меня многопользовательская установка, и я работаю над автоматическим созданием новых хостов. Я пытаюсь просто установить значение Allow Null в таблице для каждого из столбцов при первом создании таблицы. Это не работает, но более поздние файлы миграции, которые добавляют новые столбцы в существующую таблицу, работают с установкой для них значения nullable.

Я использую следующее, чтобы сначала создать таблицу, значение null не установлено:

 public function up()
{
    Schema::create('phone_logs', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->string('type')->nullable(true)->change();
        $table->string('groupId')->nullable(true)->change();
        $table->string('status')->nullable(true)->change();
        $table->string('status_code')->nullable(true)->change();
        $table->longText('message')->nullable(true)->change();
        $table->string('sender')->nullable(true)->change();
        $table->string('receiver')->nullable(true)->change();
        $table->string('contactNumber')->nullable(true)->change();
        $table->dateTime('date')->nullable(true)->change();
        $table->string('messageUID')->nullable(true)->change();
        $table->integer('has_read')->nullable(true)->change();
        $table->string('lists_sent')->nullable(true)->change();
        $table->string('user_id')->nullable(true)->change();
        $table->string('audio')->nullable(true)->change();
        $table->timestamps();
    });
}
  

Затем, используя это, добавьте 3 новых столбца в таблицу, и она установит значение null:

 public function up()
{
    Schema::table('phone_logs', function (Blueprint $table) {
        //
        $table->string('reply_numbers')->nullable(true);
        $table->text('auto_response_1')->nullable(true);
        $table->dateTime('schedule_date')->nullable(true);
    });
}
  

Я добавил -> change() после прочтения нескольких предложений, а также включил nullable(true) вместо просто nullable(), как это было предложено, но все еще не установлено и требует, чтобы я сделал это вручную.

Комментарии:

1. Вы вводите новую таблицу или меняете существующую таблицу?

2. Создание, схема::создать. Схема:: таблица позже, чтобы добавить больше столбцов, используя другой файл миграции, устанавливает nullable нормально

3. Если вы создаете новую таблицу, вам не нужно ее использовать ->change() , поскольку менять нечего 🙂 Вы можете просто сделать $table->string('name')->nullable(); , и все готово. Или, по крайней мере, вы должны быть в состоянии это сделать.

4. Это то, что я использовал, я добавил -> change() только сейчас, прочитав некоторые другие предложения об изменениях после 5. Без него или без него я не вижу изменений, по-прежнему разрешить значение Null снят флажок. Я также пробовал использовать -> default(‘NULL’), но это тоже не сработало.

5. Вы уже запустили эту миграцию? Если это так, вам придется повторно запустить миграцию (с помощью отката или обновления и т. Д.) И запустить снова или сделать это в новой миграции. У меня есть множество миграций, которые nullable() затем при запуске выдаются NULL: YES при проверке DESCRIBE example; через SQL.