db 구성
- name, date, lunch, dinner 컬럼이 있는 테이블 생성했는데, 지금 보니 수정사항이 많이 보임.
일단, pk 로 date를 잡는 게 아니라, auto increment 속성을 준 id를 부여했어야 했음. 지금까지는 큰 문제 없지만, 이 작업을 해주지 않으면 데이터 식별자가 따로 없어서 데이터가 늘어나면 분명히 큰 문제가 생길 것.
작업 파일 관련
meal 에 관련된 부분은 구분하기 쉽도록 분리해서 작업했음.
- view 같은 경우에는 따로 meal 폴더를 생성해서 그 안에 index, create, edit을 넣었음.
(/Users/kyunglimkang/Sites/dev/exelbid2-manage-v2/resources/views/admin/tool/meal)
- model 의 경우에는, modelRepository 파일을 만들었고, 그 안에 db에 접근해서 하는 작업들을 분리해놓음. 모든 식단 정보를 읽어오는 것, 특정 식단 정보만 읽어오는 것, 새로운 식단 정보를 입력하는 것, 기존의 식단 정보를 수정하는 함수들이 있음.
(/Users/kyunglimkang/Sites/dev/exelbid2-manage-v2/app/Repositories/MealRepository.php)
- controller의 경우에는 ToolController에 넣어놨음.
(/Users/kyunglimkang/Sites/dev/exelbid2-manage-v2/app/Http/Controllers/Admin/ToolController.php)
- 라우팅은 라우팅 파일에서 작업했음
(/Users/kyunglimkang/Sites/dev/exelbid2-manage-v2/routes/web-admin.php)
라우팅 관련
route::get => 어떤 URI에 접근할 것인지. 해당 URI에 접근했을 때 어떤 함수를 실행할지는 controller@index 함수를 사용할 것이다 라는 것.
/Users/kyunglimkang/Sites/dev/exelbid2-manage-v2/routes/web-admin.php
Route::group([
'prefix' => 'tool',
'as' => 'tool.'
], function () {
// Route List
Route::match(['get', 'post'], 'adstxt', 'ToolController@adstxt')->name('adstxt');
Route::get('adstxt/download', 'ToolController@downloadAdstxt')->name('adstxt.download');
Route::get('market', 'ToolController@showMarketApiForm')->name('market.show');
Route::match(['get', 'post'], 'market/find', 'ToolController@findMarketApi')->name('market.find');
//mongo object id search 용도
Route::get('mongo', 'ToolController@mongo')->name('mongo');
Route::get('search', 'ToolController@objectSearch')->name('search');
Route::get('meal', 'ToolController@index')->name('meal.index');
Route::get('meal/create', 'ToolController@create')->name('meal.create');
Route::match(['get', 'post', 'patch'], 'meal/store', 'ToolController@store')->name('meal.store');
Route::get('meal/edit/{date}', 'ToolController@edit')->name('meal.edit');
Route::match(['get', 'patch'], 'meal/update', 'ToolController@update')->name('meal.update');
});
});
index, create, edit 페이지는 그냥 정보만 출력하면 되기 때문에 get Method 만 라우팅.
create 페이지에서 form submit 을 클릭하면 store로 라우팅 됨. 해당 store URI에서는 데이터를 저장하는 작업을 할 거임. edit 페이지에서 수정을 완료하고 submit을 클릭하면 update로 라우팅 됨. 여기서도 마찬가지로 데이터를 저장하는 작업을 할 것. store 와 update에서는 get 과 post 를 일단 둘 다 받음.
Question
1. 라우팅에서 store, update의 경우에는 사실 post 만 받아도 될 것 같은데, get을 같이 안 받아주면 오류가 나서 get과 post를 둘다 받아줬다. 오류가 나는 이유는..?
2. 사실상 store와 update는 하나의 함수로 합칠 수 있을 것 같기도 하다. 이 둘을 합치는 것이 좋은 선택인지 궁금하고, 만약 그렇다면 합치는 방법도 궁금함. (처음에 ismethod 사용해서 post면 store, patch면 update로 하는 방법을 했었는데 안 됐음)
'기타' 카테고리의 다른 글
github 인증 오류 / password authentication was removed / 인증 토큰 발급 (0) | 2022.01.19 |
---|---|
라라벨 과제 코드리뷰 후기 / 라라벨 과제 최종 리뷰 (0) | 2022.01.18 |
라라벨 과제 1차 리뷰 (220112) (0) | 2022.01.17 |
22년 1월 2주차 TIL (0) | 2022.01.17 |
22년 1월 1주차 TIL (0) | 2022.01.10 |
댓글