백엔드/laravel
라라벨 기존 모델의 복사본(replicate) 만들기
janggos
2024. 1. 20. 15:26
replicate 메서드는 복제된 모델의 모든 속성을 가진 새로운 모델 인스턴스를 생성합니다.
먼저, 새로운 게시물을 생성하는 코드를 만들어 봅시다.
$post = Post::create([
'title' => 'Replicate',
'slug' => 'replicate',
'excerpt' => 'This tutorial is about replicating content',
'description' => 'This tutorial is about replicating',
]);
이제 모델을 복제하려면 새로운 게시물에서 replicate 메서드를 호출하면 됩니다.
$replicatedPost = $post->replicate();
title 및 slug는 고유해야 하기 때문에 오류가 발생합니다.
이를 방지하려면 fill 메서드를 변경하여 중복되지 않아야 하는 키-값 쌍을 전달할 수 있습니다.
$replicatedPost = $post->replicate()->fill([
'title' => 'Replicated',
'slug' => 'replicated',
]);
// 복제된 모델을 데이터베이스에 저장
$replicatedPost->save();