Tips
27 липня 2026
touch() - автооновлення timestamps у батьків
Додали коментар до поста, а updated_at у поста не змінився. Кеш не оновився.
touch() дозволяє автоматично оновлювати час оновлення батьківської моделі.
Як працює:
У дочірній моделі вказуємо $touches. Коли вона зберігається - оновлюється updated_at у батьків.
Де корисно:
- Інвалідація кешу за timestamp
- "Остання активність"
- Відстеження змін контенту
Працює з будь-якими зв'язками.
class Comment extends Model
{
// Авто-touch для поста
protected $touches = ['post'];
public function post()
{
return $this->belongsTo(Post::class);
}
}
// Тепер при створенні/оновленні коментаря
$comment = new Comment(['body' => 'Great post!']);
$comment->post()->associate($post);
$comment->save();
// updated_at у Post буде оновлено
// Ручне оновлення timestamps
$post->touch();
// Touch кількох зв'язків
class Comment extends Model
{
protected $touches = ['post', 'author'];
}