라라벨 제너레이터 사용기 1 free

2019-08-15

어제 벨 제너레이터 설치기 및 설치 방법 소개에 이어 오늘은 간략한 사용기를 공유해보겠습니다.


뉴스레터 스캐폴딩


벨 제너레이터는 php artisan infyom:scaffold 모델명으로 스캐폴딩을 실행합니다. API를 만들때는 scaffold 대신 api를 API와 스캐폴딩을 동시에 할 때는 api_scaffold를 쓰면 됩니다.


php artisan infyom:api 모델명
php artisan infyom:scaffold 모델명
php artisan infyom:api_scaffold 모델명


명령어를 입력하면 대화형 입력 인터페이스가 나오는데 프로퍼티별로 ‘필드 인풋’ -> ‘유효성 검증’을 입력하는 과정을 반복하게 됩니다. 위의 영상을 참고해주세요.


영상에서는 막힘없이 사용하는 것 처럼 보이지만 어제 오늘 삽질의 결과 조금 익숙해져서 그런겁니다 ^^ 사용법을 확인해가면서 하느 이전에는 조금 더 버벅거렸어요. 사용방법은 여기서 확인하실 수 있고, 사용법을 익히는데는 그리 오랜 시간이 필요하진 않습니다.


스크린샷 2019-08-14 오전 9.26.10.png


입력을 마치면 위에 보는 것과 같이 많은 것들을 만들어줍니다.



  • 마이그레이션

  • 모델

  • 레파지토리

  • 팩토리

  • 생성/업데이트 리퀘스트

  • 컨트롤러


  • 우트

  • 메뉴


마이그레이션 파은 수정이 필요!


마지막에 마이그레이션을 실행할거냐는 질문에 no고 입력한 것을 눈여겨 보세요. 지금 상태에서는 마이그레이션을 실행해도 에러는 안나기 때문에 별 문제 없다고 생각하실 수 있지만 *중대한 문제가 있습니다.


벨 5.8 부터는 id 컬럼의 기본 타입이 increments에서 bigIncrements로 바뀌었습니다. 그런데 벨 제너레이터는 id를 increment로 만들어 줍니다.


스크린샷 2019-08-14 오전 9.24.51.png


서 마이그레이션을 실행하기 전에 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는 메뉴가 생성되었네요.
스크린샷 2019-08-14 오전 9.38.25.png


뉴스레터를 골서 들어가 봅니다.
스크린샷 2019-08-14 오전 9.38.43.png

우측의 + 버튼을 클릭해서 하나 추가해봅시다.
스크린샷 2019-08-14 오전 9.38.47.png

잘 저장이 되고 목록에 나타납니다. 목록에서 눈 모양을 클릭하면 상세 화면으로, 수정 버튼을 누르면 수정화면으로 이동합니다. 예상하셨겠지만 쓰레기통을 누르면 삭제가 되고요.
스크린샷 2019-08-14 오전 9.42.19.png


마치며


확실히 빨리 빨리 만들어지는 느낌은 있네요. 하지만 원하는대로 만들기 위해서는 보러플레이트에서 수정을 해야하는데, 직접 만든게 아니다 보니 ‘뭐가 어떻게 만들어진건지 모르는’ 상태에서 오는 불안감이 있네요.


저도 앞서 만든 저 스캐폴딩은 관리자화면에는 어울리겠지만 사용자용으로는 어렵겠다는 생각이 드는데, 막상 우트는 관리자용 우트가 아니고 반 사용자용 우트로 만들어져있어서 이제부터 어떻게 해야할지 살짝 고민이 되네요. 스캐폴딩을 관리자로 쓸 것이냐, 아니면 사용자용으로 고쳐서 쓸것이냐. 후자를 선택한다면 뷰 스케폴딩은 사실상 싹 다 갈아엎어야 하는 상황인데, 어떻게 생각해보면 당연한 이야기네요. ^^


PS. 오늘은 릴리즈한 프로젝트가 너무~ 많은 날이었어요. laravel 5.8.32, inertia.js, confident laravel 등등 어떻게 같은 날 이렇게 많은 프로젝트들이 릴리즈를 하는지 신기할 정도였네요. 틈틈이 정리해서 공유하겠습니다 :) 기대해주세요!


1 1 벨 33호
2019년 8월 14



이현석

메쉬 코리아 개발자. 바쁜 팀장님 대신 알려주는 신입 PHP 개발자 안내서를 쓰고, 클린 아키텍처 인 PHP를 번역했습니다. 2020년에 출간될 Laravel Up & Running 2nd Edition을 번역하고 있습니다.