Поле timestamps
Поле timestamps используется при создании миграций для добавления в таблицу двух колонок: created_at и updated_at. Эти колонки автоматически заполняются текущим временем при создании и обновлении записи в модели Eloquent. Метод вызывается внутри схемы таблицы и не принимает параметров.
Синтаксис
<?php
Schema::create('table_name', function (Blueprint $table) {
$table->timestamps();
});
?>
Пример
Создадим миграцию для таблицы статей с использованием поля timestamps:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
public function down()
{
Schema::dropIfExists('articles');
}
};
?>
В результате выполнения миграции в таблице articles появятся колонки created_at и updated_at с типом timestamp.
Пример
При создании новой записи через модель Eloquent поле created_at автоматически заполняется текущим временем:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function store(Request $request)
{
$article = Article::create([
'title' => 'article',
'content' => 'abcde',
]);
$res = [
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
];
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"created_at":"2024-01-01 12:00:00","updated_at":"2024-01-01 12:00:00"}
Пример
При обновлении записи поле updated_at автоматически обновляется на текущее время:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function update(Request $request, $id)
{
$article = Article::find($id);
$article->title = 'updated article';
$article->save();
$res = [
'created_at' => $article->created_at,
'updated_at' => $article->updated_at,
];
echo json_encode($res);
}
}
?>
Результат выполнения кода:
{"created_at":"2024-01-01 12:00:00","updated_at":"2024-01-01 12:05:00"}
Пример
Если необходимо отключить автоматическое обновление временных меток, можно использовать метод withoutTimestamps:
<?php
namespace App\Http\Controllers;
use App\Models\Article;
use Illuminate\Http\Request;
class ArticleController extends Controller
{
public function update(Request $request, $id)
{
$article = Article::find($id);
$article->withoutTimestamps(function () use ($article) {
$article->title = 'updated without timestamp';
$article->save();
});
$res = $article->updated_at;
echo json_encode($res);
}
}
?>
Результат выполнения кода:
"2024-01-01 12:00:00"
Смотрите также
-
поле
timestamp,
которое создаёт отдельную колонку с временной меткой -
поле
date,
которое создаёт колонку для хранения даты -
поле
dateTime,
которое создаёт колонку для хранения даты и времени -
поле
softDeletes,
которое добавляет поддержку мягкого удаления записей