Метод useCurrent
Метод useCurrent применяется к столбцу типа timestamp или dateTime
при создании таблицы в миграциях Laravel. Он устанавливает для столбца
значение по умолчанию, равное текущей дате и времени на момент записи.
Этот метод часто используется для автоматической установки времени
создания записи без необходимости явно указывать его в коде.
Синтаксис
<?php
Schema::create($table, function (Blueprint $table) {
$table->timestamp($column)->useCurrent();
});
?>
Пример
Давайте создадим таблицу 'articles' со столбцом 'created_at',
который автоматически заполняется текущей датой и временем:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamp('created_at')->useCurrent();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('articles');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Пример
Метод useCurrent также может быть использован со столбцом dateTime.
Давайте создадим таблицу 'posts' со столбцом 'published_at':
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
public function up()
{
Schema::create('posts', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('body');
$table->dateTime('published_at')->useCurrent();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('posts');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Пример
Метод useCurrent можно комбинировать с методом nullable
для создания столбца, который может быть NULL, но по умолчанию
заполняется текущей датой и временем:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
return new class extends Migration
{
public function up()
{
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->string('author');
$table->text('content');
$table->timestamp('approved_at')->nullable()->useCurrent();
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('comments');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"
Пример
Также метод useCurrent часто используется вместе с методом
default для явного указания значения по умолчанию, но с текущим
временем. Однако в большинстве случаев достаточно просто вызвать
useCurrent без дополнительных методов. Вот пример использования
с методом default:
<?php
use IlluminateDatabaseMigrationsMigration;
use IlluminateDatabaseSchemaBlueprint;
use IlluminateSupportFacadesSchema;
use IlluminateSupportFacadesDB;
return new class extends Migration
{
public function up()
{
Schema::create('messages', function (Blueprint $table) {
$table->id();
$table->string('sender');
$table->text('text');
$table->timestamp('sent_at')->default(DB::raw('CURRENT_TIMESTAMP'));
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('messages');
}
};
?>
Результат выполнения миграции:
"Migration completed successfully"