#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.