백엔드/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();