РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
113 of 1392 menu

Метод nullable

Метод nullable применяется к определению колонки при создании или изменении таблицы в миграциях Laravel. Он указывает, что колонка может хранить значение NULL. По умолчанию все колонки в Laravel являются nullable, если только не задано значение по умолчанию, но явное использование метода делает код более читаемым. Также метод часто используется в цепочке с другими методами для отмены ограничения NOT NULL при изменении существующих колонок.

Синтаксис

<?php Schema::table('table_name', function (Blueprint $table) { $table->string('column_name')->nullable(); }); ?>

Пример

Давайте создадим таблицу пользователей с полем 'phone', которое может быть NULL:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->string('phone')->nullable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('users'); } }; ?>

В результате выполнения миграции будет создана таблица 'users', где колонка 'phone' может содержать значение NULL.

Пример

Давайте изменим существующую таблицу, сделав колонку 'description' nullable:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::table('products', function (Blueprint $table) { $table->text('description')->nullable()->change(); }); } public function down(): void { Schema::table('products', function (Blueprint $table) { $table->text('description')->nullable(false)->change(); }); } }; ?>

Этот код изменит колонку 'description', разрешив ей принимать NULL значения.

Пример

Давайте создадим таблицу статей с несколькими nullable полями разных типов:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('articles', function (Blueprint $table) { $table->id(); $table->string('title'); $table->text('content'); $table->integer('views')->nullable()->default(0); $table->boolean('is_published')->nullable(); $table->timestamp('published_at')->nullable(); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('articles'); } }; ?>

Здесь колонки 'views', 'is_published' и 'published_at' могут принимать NULL, при этом для 'views' установлено значение по умолчанию 0.

Пример

Давайте используем метод nullable вместе с методом default для более гибкого определения колонки:

<?php use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; return new class extends Migration { public function up(): void { Schema::create('comments', function (Blueprint $table) { $table->id(); $table->foreignId('user_id')->nullable()->constrained()->onDelete('set null'); $table->text('message'); $table->string('status')->nullable()->default('pending'); $table->timestamps(); }); } public function down(): void { Schema::dropIfExists('comments'); } }; ?>

В этом примере колонка 'user_id' может быть NULL и при удалении пользователя устанавливается в NULL, а колонка 'status' имеет значение по умолчанию 'pending', но может быть NULL.

Смотрите также

  • метод default,
    который устанавливает значение по умолчанию для колонки
  • метод index,
    который создает индекс для колонки
  • метод unique,
    который делает значения в колонке уникальными
  • метод constrained,
    который добавляет ограничение внешнего ключа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить