Дублирование и клонирование записей с Laravel

Дублирование и клонирование записей с Laravel

Введение

Вам когда-нибудь приходилось дублировать или клонировать запись базы данных? Laravel предоставляет для этого очень удобную функцию, replicate которая берет модель Eloquent и создает копию, чтобы вы могли затем внести изменения и сохранить ее.

Вот пример того, как вы можете это использовать. Давайте представим, что у вас есть сообщение в блоге, и вы хотите сделать его копию, чтобы опубликовать ее снова.

Пример репликации с модификацией данных

Сначала возьмите оригинальную модель:

$post = Post::find(1);

Затем вызовите для него метод репликации:

$newPost = $post->replicate();

Теперь вы можете внести в модель любые необходимые изменения, а затем повторно сохранить ее.

$newPost->created_at = Carbon::now();
$newPost->save();

Все вместе это будет выглядеть так:

$post = Post::find(1);
$newPost = $post->replicate();
$newPost->created_at = Carbon::now();
$newPost->save();

Этот replicate метод действительно полезен для быстрого клонирования или дублирования записи базы данных.

Пример с репликацией связей

Если у вашей модели есть отношения, которые вы тоже хотите скопировать. Затем вы можете использовать метод push(), предоставленный Eloquent.

Метод push() извлечет вам вновь созданный идентификатор модели из базы данных, а затем вы сможете использовать объект модели для присоединения новых отношений.

$newClient = $client->replicate();
$newClient->push();

foreach ($client->roles as $role) {
    $clone->roles()->attach($role);
}

foreach ($client->categories as $category) {
    $client->categories()->attach($category);
}

Похожие статьи

IDE Helper генератор

Этот пакет создает вспомогательные файлы, которые позволяют вашей среде IDE обеспечить точное автозаполнение. Генерация выполняется на основе файлов вашего проекта, поэтому они всегда актуальны.

Пользовательский интерфейс Laravel

Этот устаревший пакет представляет собой очень простую структуру проверки подлинности, построенную на платформе Bootstrap CSS.

WebSocket на Laravel

Запускаем websocket на Laravel с использованием пакета от BeyondCode.

Copyright © 2026 PHP Blog - шпаргалки программиста