이전 포스트에서는 라라벨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 옵션 한 줄로 깔끔하게 생성할 수 있다.
다음 포스트에서는 이렇게 생성한 파일들을 가지고 실제로 데이터를 다루는 과정을 진행해 보겠다.
다음 포스트
0 Comments
댓글 쓰기
🔸 댓글은 블로그 운영자의 승인 후에 블로그에 표시됩니다.
🔸 비로그인 방문자 분께서는 '익명'보다 이름/URL로 댓글을 남겨주시면 감사하겠습니다. (URL은 생략 가능합니다.)
🔸 구글 로그인 방문자는 '알림 사용'에 체크를 하시면, 남겨주신 댓글에 대한 답글 알림을 메일로 받아볼 수 있습니다. 📩