php artisan make:model -mrc 옵션 (Laravel 모델, 마이그레이션, 컨트롤러 역할 정리)

포스트 썸네일 이미지

이전 포스트에서는 라라벨Laravel 프로젝트의 폴더 구조를 설명했다.

오늘은 모델과 마이그레이션, 그리고 컨트롤러를 생성하는 명령어와 함께 각 파일의 역할을 간단히 설명해 보겠다.




이전 포스트




모델・마이그레이션・컨트롤러를 한꺼번에 생성하는 명령어


make bash #컨테이너 안으로 들어간다.
php artisan make:model -mrc Post

VSCode의 터미널에서 이 명령어들을 실행한다.

그러면 app/Models 폴더에 Post.php 파일이 생성된다.

그리고 -mrc 옵션을 붙인 덕분에 app/Http/Controller 폴더에 PostController.php 파일과 database/migrations 폴더에 create_posts_table.php 파일도 함께 생성된다.


여기에 붙인 -mrc 옵션은 개발자가 일일이 명령어를 여러 번 치지 않도록, 모델과 함께 세트로 따라다니는 핵심 파일들을 한 번에 만들어주는 아주 유용한 옵션이다.

각각의 글자가 의미하는 파일과 그 역할은 다음과 같다.


  • m (Migration): 데이터베이스 테이블을 생성하는 마이그레이션 파일
  • rc (Resource Controller): CRUD 로직에 필요한 메서드들이 미리 갖춰진 리소스 컨트롤러 파일
  • c (Controller): 만약 r을 빼고 c만 넣으면, 메서드들이 아직 만들어지지 않은 빈 컨트롤러 파일이 생성된다.





php artisan make:controller PostController

만약 컨트롤러를 따로 생성한다면 이 명령어를 쓰면 된다.

단, 이렇게 생성되는 컨트롤러는 리소스 컨트롤러가 아닌 빈 컨트롤러다.

리소스 컨트롤러로 만들고 싶다면 뒤에 --resource 옵션을 붙여야 한다.




php artisan make:migration create_posts_table

마이그레이션 파일(데이터베이스 테이블 설계도)만 따로 생성하고 싶을 때는 이 명령어를 사용한다.

create_로 시작하고 뒤에 테이블 이름, 그리고 _table로 끝나는 규칙(create_테이블명_table)으로 이름을 지어주면, 라라벨이 posts라는 테이블을 새로 만드는 설계도라는 걸 알아채고 테이블 생성에 필요한 마이그레이션 파일을 만들어준다.




정리하자면,

php artisan make:model Post
php artisan make:migration create_posts_table
php artisan make:controller PostController --resource

이렇게 3개의 명령어를 입력해야 하는 복잡한 과정을 간편하게 한 줄로 줄여주는 명령어가,

php artisan make:model -mrc Post인 것이다.




명령어 한 줄로 모델과 마이그레이션과 컨트롤러 파일을 만든 모습





모델과 마이그레이션과 컨트롤러 파일들 각각의 역할 설명


이렇게 생성된 3개의 파일들이 각각 무슨 일을 하는지 짧게 간단히 설명해 보겠다.



1. 모델 (Model)

데이터베이스의 posts 테이블과 나의 php 코드를 연결해 주는 통역사(모델)다.

우리가 SQL 쿼리문(SELECT * FROM...)을 직접 짜지 않아도, Post::all()이나 Post::create() 같은 php 메서드만으로 데이터베이스의 데이터를 저장, 조회, 수정, 삭제할 수 있게 해 준다.



2. 마이그레이션 (Migration)

데이터베이스 테이블의 설계도(구조 정의서)다.

posts라는 테이블에 어떤 컬럼(예: 글 내용이 들어갈 content, 작성자 ID가 들어갈 user_id 등)이 들어가야 하는지 코드로 작성하는 곳이다.

이 파일을 수정한 뒤 php artisan migrate 명령어를 실행하면 실제 데이터베이스에 테이블이 만들어진다.



3. 컨트롤러 (Controller)

사용자의 요청을 받아서 모델과 뷰(화면)를 통제하는 지휘관(컨트롤러)이다.

사용자가 "글 목록을 보여줘", "글을 저장해줘"라고 요청(Request)하면, 그 요청을 받아 모델(Post)에게 "데이터 좀 가져와" 하고 시키고, 가져온 데이터를 뷰(Blade 파일 등)에 실어서 사용자 브라우저로 응답(Response)을 보내주는 중심축 역할을 한다.




요약하자면 사용자가 브라우저로 접속했을 때, 지휘관(컨트롤러)이 요청을 받아 통역사(모델)를 통해 데이터베이스에 접근한다.

그리고 그 데이터베이스는 설계도(마이그레이션)를 기반으로 안전하게 뼈대가 잡혀있는 구조인 것이다.

이 핵심이 되는 3개의 파일들을 일일이 따로 만들 필요 없이 -mrc 옵션 한 줄로 깔끔하게 생성할 수 있다.


다음 포스트에서는 이렇게 생성한 파일들을 가지고 실제로 데이터를 다루는 과정을 진행해 보겠다.




다음 포스트

이 글이 도움이 됐거나 유익했다면 스크롤을 조금만 더 내려서 댓글을 남겨주세요. (비로그인도 가능합니다!)
응원이나 피드백이 담긴 댓글은 제가 계속 블로그를 해나갈 수 있는 원동력이 됩니다. 😊

지인에게 보여주고 싶은 글이었다면 URL을 복사해서 메신저나 소셜 미디어에 공유해 주세요.
이전 포스트 다음 포스트

댓글 쓰기

0 Comments

문의하기 양식