, ,

[PHP 라라벨 5 On Mac] 15 : 엘로퀀트 ORM 2

앞서 라라벨의 ORM에 대해 입문적인 부분을 살펴보았고, 이번 단에서는 관계에 대해서 설명하겠습니다.앞서 작성한 모델을 대상으로 설명하기에는 양이 너무 많아 가정과 방법으로 설명하도록 하겠습니다.

데이타 베이스를 설계한 뒤 각 객체와 객체는 고유식별 필드를 사용하여 관계를 가지고 있습니다.일 대 일 관계(1:1), 일 대 다 관계(1:M), 다 대 다 관계(N:M) 관계 등를 가질 수 있는데, 이 관계를 엘로퀀트 ORM에서는 어떻게 정의하는지 살펴 보도록 하겠습니다.

 

일대일 관계 정의하기

 

일대일 관계는 매우 기본적인 관계입니다. 예를 들어 User 모델은 하나의 Phone 을 가집니다. 이러한 관계를 Eloquent 에서 정의할 수 있습니다.

 

경로 database/migrations/TIMESTAMP_create_phone_table.php

 

관계 설정

 

경로 app/User.php

 

hasOne 메소드의 첫번째 인자는 관계된 모델의 이름입니다. 관계가 정의되고 나면 Eloquent의 동적 속성을 통해서 조회할 수 있습니다.

 

위의 구문의 다음과 같은 SQL로 동작합니다.

 

Eloquent는 모델의 이름을 기반으로 관계된 외래 키를 추정한다는 것에 주의하십시오. 이 경우, Phone 모델은 user_id 외래 키를 사용 한다고 가정합니다. 만약 이러한 규칙을 재정의 하고자 한다면, hasOne 메소드의 두번째 인자로 외래 키로 사용하고자 하는 컬럼명을 전달하면 됩니다. 더불어, 세번째 인자로 어떠한 로컬 컬럼이 연결에 사용될지 명시 할 수도 있습니다:

 

역관계 정의하기

Phone 모델에서 관계 설정의 반대, 즉 역관계를 정의하기 위해서는 belongsTo 메소드를 사용하면 됩니다.경로 app/Phone.php

 

위의 예제에서 Eloquent는 phones 테이블에서 user_id 컬럼을 찾을 것입니다. 만약 여러분이 따로 외래키를 정의하였다면 belongsTo 메소드에 두번째 인자로 이 키를 전달하면 됩니다.

 

추가적으로, 새번째 인자로 부모 테이블과 연결된 컬럼명을 전달 할 수도 있습니다:

 

일대다 관계 정의하기

예를 들어 한 명의 사용자는 여러개의 게시글을 쓸 수 있고, 각 게시물은 글쓴이가 한 명이 존재한다 라는 관계를 우리는 일대다의 관계라는 용어를 사용합니다.

 

경로 database/migrations/TIMESTAMP_create_boards_table.php

 

관계 설정

 

경로 app/Board.php

 

경로 app/User.php

 

 

팅커 링

  • 유저 id = 1 이 게시글을 남길때의 쿼리

  • 생성한 게시 글에 대한 조회

 

 

 

 

 

PHP 라라벨 5 On Mac 포스팅

[PHP 라라벨 5 On Mac] 1 : 다루게 될 내용들

[PHP 라라벨 5 On Mac] 2 : Composer, Valet, Framework

[PHP 라라벨 5 On Mac] 3 : Framework

[PHP 라라벨 5 On Mac] 4 : Routing

[PHP 라라벨 5 On Mac] 5 : 블레이드 템플릿 1 (View)

[PHP 라라벨 5 On Mac] 6 : 블레이드 템플릿 2 (View)

[PHP 라라벨 5 On Mac] 7 : 블레이드 템플릿 3 (View)

[PHP 라라벨 5 On Mac] 8 : 마이그레이션 (Create Table)

[PHP 라라벨 5 On Mac] 9 : 마이그레이션 (컬럼 추가 및 데이타 스토리 엔진 설정)

[PHP 라라벨 5 On Mac] 10 : 마이그레이션 (적용)

[PHP 라라벨 5 On Mac] 11 : 마이그레이션 (컬럼 수정)

[PHP 라라벨 5 On Mac] 12 : Laravel Tinker Shell

[PHP 라라벨 5 On Mac] 13 : Laravel Tinker Shell (쿼리 빌더)

[PHP 라라벨 5 On Mac] 14 : 엘로퀀트 ORM 1

[PHP 라라벨 5 On Mac] 15 : 엘로퀀트 ORM 2

[PHP 라라벨 5 On Mac] 16 : 엘로퀀트 ORM 3

[PHP 라라벨 5 On Mac] 17 : Controller I

[PHP 라라벨 5 On Mac] 18 : Controller II

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply

Your email address will not be published. Required fields are marked *