ハッピーメモメモ

私的備忘録

【Vue】【Laravel】作品(updateアクション)

booksテーブルのavailabilityの更新

①Borrowコンポーネントのborrow_event発火

②rentalsテーブルにデータを追加

③PUT/PATCH

→部分的に変更をしたいので、PATCHを使う!

 ※availabilityの値は「false」では通らない!(DBは0か1って書いてあるからかも)

    const borrow_event = async () => {
      const target_book_id = store.state.book_list[0].available_book_id[0];
      await axios.patch("http://127.0.0.1:8000/api/books/" + target_book_id, {
        availability: 0,
      });
    };

vue.jsを使ってaxiosを学ぶ | アールエフェクト

 

[ PUT ]  

リソースの作成、リソースの置換

既存リソースが存在しなければ新規作成、あれば完全な上書き

連想配列の1つのキーに対して変更をかけると、

 変更をかけたキーに対する値しか残らない(全体に変更をかけている)

何度やっても同じ結果になるような処理(べき等)

[ PATCH ]  

・リソースの部分置換

送信されたデータの範囲での部分的なリソースの上書き

連想配列の1つのキーに対して変更をかけても、

 他のキーには影響を及ぼさない(部分的に変更をかけている)

・既存のリソースを更新・変更・修正

 

➃BookControllerのupdateアクション

f:id:n-moeko1966:20220124221148p:plain

Eloquentのsaveとupdateは処理が異なる - Learn or Die

f:id:n-moeko1966:20220124222019p:plain

【laravel】データベースの操作:Eloquent ORM編 - Qiita

 

booksテーブルのavailabilityの更新(2)

・よく考えたら、更新のタイミングは2回ある!

 ①本が借りられたとき…Borrowコンポーネント

 ②本が返されたとき…StatusCコンポーネント

・どうにかして、BookControllerのupdateアクションを2つに場合分けしたい

 

Borrowコンポーネント

      await axios.patch("http://127.0.0.1:8000/api/books/" + target_book_id, {
        process: 'borrow',
      });

デバッグで確認→値渡せている!

f:id:n-moeko1966:20220202101211p:plain

BookController、updateアクション

    public function update(Request $request, $id)
    {
        // 本の貸出処理の場合
        // availabilityをfalse「0」に変更する
        if ($request->process == 'B') {
            Book::where('book_id', $id)->update(['availability' => 0]);
        } else {
            // 本の返却処理の場合
            // availabilityをtrue「1」に変更する
            Book::where('book_id', $id)->update(['availability' => 1]);
        }
    }

 

Eloquentとは

・Active RecordライクなORM

・データベースとモデルを関連付けて様々なデータ操作が可能

 

Active Recordとは

MVCで言うところのM、つまりモデルに相当するものであり、ビジネスデータとビジネスロジックを表すシステムの階層

・データベースに恒久的に保存される必要のあるビジネスオブジェクトの作成と利用を円滑に行なえるようにする

Active Record の基礎 - Railsガイド

 

メモ書き

・ルーティングの確認

php artisan route:list

f:id:n-moeko1966:20220109211442p:plain

f:id:n-moeko1966:20211221143717p:plain

f:id:n-moeko1966:20220117154832p:plain