본문 바로가기
기타

라라벨 과제 2차 리뷰 (210113)

2022. 1. 17.

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로 하는 방법을 했었는데 안 됐음)

 

 

댓글