開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Laravel >
  5. 【Laravel】モデルオブジェクトを複製するメソッド
no-image

【Laravel】モデルオブジェクトを複製するメソッド

みなさん
こんにちは
ニシザワです。

本日は、Laravelを使ってモデルオブジェクトを複製したいときについて書いていきます。
用途としては例えば、ブログ投稿を管理画面で複製するとき等に使えるかなと思います。

LaravelはDBから情報を取得する場合モデルを返してくるので、オブジェクトで返ってきた配列の中を
変更して(idをunsetとかして)、再度保存しても、新たにDBに保存される訳ではないです。

そのため、いちいちtoArrayなんて使って変えるのも面倒だなと思っていました。
しかし、Laravelにはそんな事しなくても一発でかけるメソッドが用意されていました!
replicate()ってやつです。
こいつを使うとコピー機能も簡単に実装できます。
ではソースです。
    public function getCopy($id = null){
        if(!$id){
            return Redirect::route('HomeController@index');
        }
        $data = モデル名::find($id)->replicate();
        $data->title = $data->title . '_copy';
        unset($data->created_at);
        unset($data->updated_at);
        if($data->save()){
            return Redirect::route('view.index')
                            ->with('message', '複製しました。');
        }else{
            return Redirect::route('view.index')
                            ->with('message', '複製出来ませんでした。');
        }
    }
すごくすっきりと書けますね。

本日はここまでです。
最後まで読んでいただいてありがとうございました。


 
TOPに戻る