Метод default
Метод default применяется к определению столбца в схеме базы данных
и устанавливает значение, которое будет использоваться по умолчанию
при вставке новой записи, если явно не указано другое значение.
Метод принимает один параметр - значение по умолчанию, которое может
быть любого типа данных, соответствующего типу столбца.
Синтаксис
<?php
Schema::table('table_name', function (Blueprint $table) {
$table->column_type('column_name')->default('default_value');
});
?>
Пример
Давайте создадим миграцию для таблицы 'articles'
и установим значение по умолчанию для поля 'status'
как 'draft':
<?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('body');
$table->string('status')->default('draft');
$table->timestamps();
});
}
public function down(): void
{
Schema::dropIfExists('articles');
}
};
?>
Пример
Установим значение по умолчанию для числового поля 'views'
равным 0:
<?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('articles', function (Blueprint $table) {
$table->integer('views')->default(0);
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn('views');
});
}
};
?>
При вставке новой статьи поле 'views' автоматически
получит значение 0:
<?php
use App\Models\Article;
$article = new Article();
$article->title = 'New article';
$article->body = 'Content of new article';
$article->save();
echo $article->views;
?>
Результат выполнения кода:
"0"
Пример
Установим значение по умолчанию для логического поля 'is_active'
как true:
<?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('articles', function (Blueprint $table) {
$table->boolean('is_active')->default(true);
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn('is_active');
});
}
};
?>
При создании новой записи поле 'is_active' будет
автоматически установлено в true:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
class ArticleController extends Controller
{
public function store(): string
{
$article = Article::create([
'title' => 'Active article',
'body' => 'This article is active'
]);
return $article->is_active ? 'Active' : 'Inactive';
}
}
?>
Результат выполнения кода:
"Active"
Пример
Используем метод default совместно с методом nullable
для поля 'deleted_at':
<?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('articles', function (Blueprint $table) {
$table->timestamp('deleted_at')->nullable()->default(null);
});
}
public function down(): void
{
Schema::table('articles', function (Blueprint $table) {
$table->dropColumn('deleted_at');
});
}
};
?>
При создании записи поле 'deleted_at' будет иметь
значение NULL, что указывает на то, что запись
не удалена:
<?php
use App\Models\Article;
$article = Article::create([
'title' => 'Article with soft delete',
'body' => 'Content for soft delete'
]);
echo $article->deleted_at;
?>
Результат выполнения кода:
"null"
Смотрите также
-
метод
nullable,
который позволяет столбцу принимать значение NULL -
метод
useCurrent,
который устанавливает текущее время как значение по умолчанию -
метод
create,
который создаёт новую таблицу в базе данных -
метод
table,
который изменяет существующую таблицу