laravel_saveメソッドの使い方と違い

17saveメソッドの使い方と違い

saveメソッドは、既存のモデルインスタンスを使用してデータベースのレコードを更新します。

モデルの属性を手動で変更した後、saveメソッドを呼び出すことで、その変更がデータベースに保存されます。

$memo = Memo::find($edit_id); // 変更するレコードを取得

$memo->content = $edit_memo; // 変更後のメモの内容

$memo->save(); // 変更内容を保存

どちらでも更新することができますが、まとめて上書きする場合などはupdateメソッドの方が便利なので、使い分けには注意が必要です。

これで上書き処理も実装することができました。

では画面を再読み込みし、メモを編集してみましょう。

メモを編集

無事に編集されましたね!「サンプルテキスト」が「サンプルテキスト【編集後】」に上書きされています。

これでメモ帳の完成です! お疲れ様でした。

最後にコントローラの全体を下記に記述しておきます。

エラー等が出ている場合は見比べてみてください。

<?php

namespace App\\Http\\Controllers;

use App\\Models\\Memo;
use Illuminate\\Http\\Request;

class MemoController extends Controller
{
    /**
     * 画面を表示
     * @return View
     */
    public function show()
    {
        $memo_info = Memo::get();

        return view('home')
            ->with('memo_info', $memo_info);
    }

    /**
     * メモ追加処理
     * @param Request $request
     * @return View
     */
    public function add(Request $request)
    {
        $memo_text = $request->memo_text;
        $memo_model = new Memo();
        $memo_model->content = $memo_text;
        $memo_model->save();

        return self::show();

    }

    /**
     * 削除処理
     * @param Request $request
     * @return View
     */
    public function delete(Request $request)
    {
        $delete_id = $request->delete_id;

        $memo_model = Memo::find($delete_id);
        $memo_model->delete();

        return self::show();
    }

    /**
     * 編集ページに遷移
     * @param $edit_id
     * @return View
     */
    public function getEdit($edit_id)
    {
        $memo_info = Memo::find($edit_id);

        return view('edit')
            ->with('memo_info', $memo_info);
    }

    /**
     * 編集処理
     * @param Request $request
     * @return View
     */
    public function postEdit(Request $request)
    {
        $edit_id = $request->edit_id;
        $edit_memo = $request->edit_memo;

        Memo::where('id', $edit_id)->update(['content' => $edit_memo]);

        return self::show();
    }

}

追加・削除・更新一通りの処理が学べたかなと思います。次からはより応用の認証機能(ログイン機能)や1対多・多対多やバリデーションについて学んでいきます。

Git

ここまでの変更点をコミットします。

git add .

git commit -m "メモ帳の作"

git init

また、現在の状態を保存しておくためにも、リモートリポジトリにソースコードを反映させましょう。

リモートリポジトリの作成方法とpushの方法は、Gitの教材を参考にしてください。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です