어제 라라벨 제너레이터 설치기 및 설치 방법 소개에 이어 오늘은 간략한 사용기를 공유해보겠습니다.
라라벨 제너레이터는 php artisan infyom:scaffold 모델명
으로 스캐폴딩을 실행합니다. API를 만들때는 scaffold 대신 api를 API와 스캐폴딩을 동시에 할 때는 api_scaffold를 쓰면 됩니다.
php artisan infyom:api 모델명
php artisan infyom:scaffold 모델명
php artisan infyom:api_scaffold 모델명
명령어를 입력하면 대화형 입력 인터페이스가 나오는데 프로퍼티별로 ‘필드 인풋’ -> ‘유효성 검증’을 입력하는 과정을 반복하게 됩니다. 위의 영상을 참고해주세요.
영상에서는 막힘없이 사용하는 것 처럼 보이지만 어제 오늘 삽질의 결과 조금 익숙해져서 그런겁니다 ^^ 사용법을 확인해가면서 하느라 이전에는 조금 더 버벅거렸어요. 사용방법은 여기서 확인하실 수 있고, 사용법을 익히는데는 그리 오랜 시간이 필요하진 않습니다.
입력을 마치면 위에 보는 것과 같이 많은 것들을 만들어줍니다.
마지막에 마이그레이션을 실행할거냐는 질문에 no라고 입력한 것을 눈여겨 보세요. 지금 상태에서는 마이그레이션을 실행해도 에러는 안나기 때문에 별 문제 없다고 생각하실 수 있지만 *중대한 문제가 있습니다.
라라벨 5.8 부터는 id 컬럼의 기본 타입이 increments
에서 bigIncrements
로 바뀌었습니다. 그런데 라라벨 제너레이터는 id를 increment로 만들어 줍니다.
따라서 마이그레이션을 실행하기 전에 increments를 bigIncrements로 바꿔주셔야 해요. 그렇지 않으면 차후에 문제가 발생할 가능성이 있습니다. 실제로 저는 외래키 제약을 걸때 타입이 일치하지 않는다는 에러가 나서 발견하게된 문제에요.
포스트 스캐폴딩을 하다가 뉴스레터 만들 때 필드 하나를 빼먹은게 생각났습니다. 라라벨 제너레이터는 다행히 롤백을 지원합니다
php artisan infyom:rollback 모델명 종류명
제 경우엔
php artisan infyom:rollback Newsletter scaffold
로 하면 되었는데, 주의할 점은 라라벨 제너레이터는 DB 마이그레이션 롤백은 안해준다는 것입니다. 따로 해줘야하는데요, 라라벨 제너레이터로 롤백을 하면 마이그레이션 파일이 지워지기 때문에, 라라벨 제너레이터를 실행하기 전에 마이그레이션 롤백 부터 해줘야 해요.
php artisan migrate:rollback
php artisan infyom:rollback Newsletter scaffold
만약 마이그레이션 롤백을 안했는데 제너레이터 롤백을 해버렸다면, 그냥 데이터베이스에서 해당 테이블을 지워주시면 되긴 합니다.
롤백을 하고나면 대화형 인터페이스로 다시 스캐폴딩을 해야합니다. 저는 필드가 몇개 없어서 금방 끝났지만 필드가 많은 경우엔 조금 귀찮을 수도 있겠네요. 스캐폴딩이 만들어주는 파일에 일일이 들어가서 수정하는 것 보다야 낫긴 하겠네요.
로그인하고 들어가보니 좌측에 Posts와 Newsletters라는 메뉴가 생성되었네요.
확실히 빨리 빨리 만들어지는 느낌은 있네요. 하지만 원하는대로 만들기 위해서는 보일러플레이트에서 수정을 해야하는데, 직접 만든게 아니다 보니 ‘뭐가 어떻게 만들어진건지 모르는’ 상태에서 오는 불안감이 있네요.
저도 앞서 만든 저 스캐폴딩은 관리자화면에는 어울리겠지만 사용자용으로는 어렵겠다는 생각이 드는데, 막상 라우트는 관리자용 라우트가 아니고 일반 사용자용 라우트로 만들어져있어서 이제부터 어떻게 해야할지 살짝 고민이 되네요. 스캐폴딩을 관리자로 쓸 것이냐, 아니면 사용자용으로 고쳐서 쓸것이냐. 후자를 선택한다면 뷰 스케폴딩은 사실상 싹 다 갈아엎어야 하는 상황인데, 어떻게 생각해보면 당연한 이야기네요. ^^
PS. 오늘은 릴리즈한 프로젝트가 너무~ 많은 날이었어요. laravel 5.8.32, inertia.js, confident laravel 등등 어떻게 같은 날 이렇게 많은 프로젝트들이 릴리즈를 하는지 신기할 정도였네요. 틈틈이 정리해서 공유하겠습니다 :) 기대해주세요!
1일 1식 라라벨 33호
2019년 8월 14일
메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 처음부터 제대로 배우는 라라벨(Laravel Up & Running 2nd Edition)을 번역했습니다.