본문 바로가기
Laravel/코지코더

코지코더 - 라라벨 07. 모델

by SKim입니다 2020. 6. 5.

MVC

 

Model - app\user.php

  - DB에 연결해서 데이터를 가져오고, 데이터를 DB에 저장하고, 업데이트하고, 삭제하는 빌드를 할 수 있다.

 

View - resouces\view (blade)

 

Controller - app\http\controllers

  ① 유저가 데이터를 넣어달라고 요청하면 Controller에서 그것을 받아서 다시 Model에 넣어주는 역할을 한다.
  ② 중간에 비즈니스 로직을 돌린다.
     회원가입 폼을 작성해서 제출할 때(여기까지는 view의 역할)
     view가 제출된 데이터를 Controller에 보낸다.
     그러면 Controller는 겹치는 id는 없는지와 pw를 확인한다.
     괜찮다면 Model에게 괜찮으니 DB에 넣어달라고 하는 역할까지 한다.

 

php artisan make:migration --help

php artisan make:migration create_(테이블 이름)

테이블 이름은 복수형으로 쓰는 것이 관례이다.

 

마이그레이션은 이 목록의 순서대로 실행이 되는데,

위의 두 개는 저번에 실행했기 때문에 이번에는 실행되지 않는다.

 

 

title과 << user_id를 추가해준다.

 

마지막 줄

- foreign 키로 reference를 하는 방법.

  이 테이블의 user_id가 users라는 테이블의 id를 reference한다. >> 이건 그냥 나중에 할 게요..

 

지우고 title과 description만 남겼다.

 

※ ↓이것은 라라벨 5.8이라 좀 다르다.

이 때 id가 bigInteger이므로

user_id도 bigInteger로 해야 에러가 안 난다.

 

※ timestamps();는

 4, 5번(created_at과 updated_at)을 만들어준다.

 

php artisan migrate

 

 

 

모델

 

하나의 테이블 당 하나의 모델을 가진다고 생각하면 된다.

php artisan make:model --help

 

php artisan make:model Project

 

테이블 이름이 projects(복수형)이면

모델 이름은 Project(대문자+단수형)

 

이 모델을 이용해서 데이터를 가져와보자.

 

projects에 데이터 하나를 생성했다.

(id와 시간들은 자동)

 

php artisan make:controller ProjectController

 

 

 

projects라는 폴더를 만들고

index라는 blade 파일을 만든다.

 

기존의 layout.blade.php 파일을

복제해서 layout_bak.blade.php로 저장하고

 

layout.blade.php에서 선택한 부분만 지웠다.

 

 

그리고 index.blade.php 파일에 다음과 같이 입력해준다.

 

컨트롤러

 

web.php

잘 된다.

 

 

이번에는 한 행 더 만들어서

이 DB에 있는 데이터들을 가져와서

화면에 출력해보겠다.

 

컨트롤러는 '모델로부터 데이터를 받아서 나한테 건네줘' 이런 역할을 한다고 했다.

 

모델(Project.php)의 네임스페이스는 App이다.

 

 

이것을 아래와 같이 바꾸면

 

그러면 지금 컨트롤러가 모델한테

"Project 테이블에 있는 모든 데이터를 가져와서 나에게 전해줘"하면

 

$project에 프로젝트를 전부 다 담아준다.

 

그러면 $project에 정보를 받은 것을 view에 보내주면

view에서 그 정보에 접근이 가능할 것이다.

 

그리고 이것을

이렇게 바꾸면

 

projects 테이블에 담겨있는 두 개의 데이터(레코드)를 받아서..

 

 

-----------------------------------------------------------------

정리하면,

 

주소창에 이렇게 치면

 

여기에 get 리퀘스트를 보내게 된다.

그러면 Project Controller 안에 index를 실행한다.

 

그래서 index에 들어가면 index에서는

모델한테 'projects 테이블에 있는 모든 것을 받아줘'라고 핟나.

그러면 그 모든 데이터가 $projects에 저장되고,

그 데이터를 projects.index blade파일에 pass해준다.

 

 

그래서  index 블레이드에서 $projects 이름으로 변수를 받아와서 쓸 수 있다.

foreach로 출력한다.

댓글