Allied ArchitectsAllied ArchitectsEngineer Blog

第一章7 『Todoモデルに関わるコントローラーの作成』

2022/03/26 Laravel

todoの追加と同時にラベルとの紐付けを行うためにサービスクラスを追加したり編集したりした。期限をCarbonじゃなくstringで登録するようにもした。

app/Repositories/TodoRepository.phpのcreateとupdateを以下のように編集した。

 

app/Services/TodoLabel/LinkTodoAndLabelsService.phpというサービスクラスを作り、以下のように編集した。
もともとTodoに紐付いていたLabelを取り外し、新しく紐付けるようにした。

 

app/Services/Todo/CreateTodoService.phpを以下のように編集する。Todoを作成したときにラベルと紐付け、作ったTodoとそれに紐付いているLabelを返すようにした。

遅延Eagerロード

 

app/Services/Todo/UpdateTodoService.phpを以下のように編集した。ここでも更新した後に紐付いているLabelを一緒に返すようにした。

 

全てのTodoを取得するときに一緒にLabelも取って来れるようにmodelにEagerロードを追加した。app/Models/Todo.phpを以下のように編集した。

デフォルトのEagerロード

 

サービスクラスとリポジトリクラスの変更に伴ってテストも修正した。

tests/Unit/Repositories/TodoRepositoryTest.phpを以下のように編集した。

 

tests/Unit/Services/Todo/CreateTodoServiceTest.phpを以下のように編集した。

 

 

tests/Unit/Services/Todo/UpdateTodoServiceTest.phpを以下のように編集した。

 

サービスとリポジトリができたのでコントローラーを作っていく。

コントローラーを作る前にroutes/api.phpを以下のように編集した。

 

app/Http/Controllers/Api/Todo/CreateTodoController.phpを以下のように編集した。

 

app/Http/Controllers/Api/Todo/DeleteTodoController.phpを以下のように編集した。

 

app/Http/Controllers/Api/Todo/GetTodosController.phpを以下のように編集した。

 

app/Http/Controllers/Api/Todo/UpdateTodoController.phpを以下のように編集した。

 

コントローラーのテストを作っていく。

 

テストを書いていく。

tests/Feature/Todo/CreateTodoControllerTest.phpを以下のように編集した。

 

tests/Feature/Todo/GetTodosControllerTest.phpを以下のように編集した。

 

tests/Feature/Todo/UpdateTodoControllerTest.phpを以下のように編集した。

 

tests/Feature/Todo/DeleteTodoControllerTest.phpを以下のように編集した。

 

テストを実行する。

 

これが表示されれば成功。

れっちり
  • れっちり
  • 2021年新卒入社。letroの開発・運用業務を担当しています。

RELATION ENTRY

第一章11『子コンポーネントにプロパティを渡してグループ分けしたtodoを表示する』

第一章11『子コンポーネントにプロパティ...

2022/04/22 Vue.js

前回、todoを期限でグループ分けしたのでtodoGroupsの中のtodoにアクセスするためにはtodoGroups.within.today.todos[0]というようにする必要がある。また、todoGroups.within.todayまで到達したあとの処理は期限切れ、今日のもの、明日のもの、...

続きを読む

第一章10 『取得したtodoを期限でグループ分けする』

第一章10 『取得したtodoを期限でグ...

2022/04/18 Vue.js

取得した後に期限ごとにグループ分けをしたいので関数を追加する。 まず、getTodos関数によって取得したtodosはidの昇順になっているので、期限の日付で並び替えを行う。 以下の関数をmethodsに追加する。getTodos関数で取得してきたtodosをdataのtodos(以後this....

続きを読む

れっちりの記事一覧へ

ページTOPへ