2014-10-22 4 views
1

나는 관계를 정의하는 것에 대해 Laravel 문서를 읽고 있었는데, 그것은 나에게 조금 불분명했습니다.Laravel 모델 관계. 순수한 DB 관련

가 나는 사람들이 목표를 선택합니다 :

(때문에 언어의 장벽 ..의 수) 나는 다음 얻었다. 사용자가 목표를 선택하면 관련 패키지가 표시됩니다. 이 패키지에는 정보 버튼이있어 패키지에 대한 추가 정보가 들어 있습니다. 사용자가 정보 링크를 클릭하면 관련 패키지 정보가 표시됩니다.

참고하시기 바랍니다. 9 가지 목표가 있습니다. 각 목표에는 3 개의 패키지가 있고 각 패키지에는 1 개의 packageinfo가 있습니다.

Objective Model 
// contains 
- id 
- name 
- icon 

// relationship 
HasMany package 

//////////////////////////////////////////////////// 
Package Model 
// contains 
- id 
- title 
- information 
- info_link 
- buy_link 

// relationship 
belongsToMany Model 
hasMany PackageInfo -- or has PackageInfo ? 

/////////////////////////////////////////////////// 
PackageInfo Model 
// contains 
- id 
- body 

// relationship 
belongsToMany Package -- or belongsTo Package ? 


////////////////////////////////////////////////// 
Objective_package Pivot 
- id 
- Objective_id 
- Package_id 

package_packageInfo pivot 
- id 
- Package_id 
- packageinfo_id 

관계를 올바르게 정의 했나요? 아니면 정말 거꾸로 된 전체 문서를 읽었습니까?

답변

0

관계를 패키지로 목적은 올바른 것 같다 만 1 packageinfo가있는 경우 다음 그 관계

//PackageInfo Model 
- id 
- package_id 
- body 

//relationship 
belongsTo Package 
$this->belongsTo('Package'); 

나는 이것을 설명하기 위해 줄 수있는 가장 빠른 대답을 피벗 테이블이 필요하지 않습니다 hasOne의는 것입니다 부모 개체에 속하지만 항상 그 개체를 가져올 필요는 없을 수도 있습니다. 사용자에게는 프로필이 있습니다. 자신의 약력이나 프로필을 원하지 않는 시간은 90 % 이상이지만 그 프로필은 해당 사용자 만 독점합니다.

hasMany는 주소와 같습니다. 사용자는 배송 또는 결제를 위해 여러 개의 주소를 가질 수 있지만 다른 사용자는 해당 데이터에 액세스 할 수 없으므로이 하나의 사용자는 주소가 동일합니다.

belongsToMany 또는 Many To Many는 여러 개체간에 공유됩니다. 사용자는 많은 역할을 가질 수 있고 역할은 많은 사용자를 가질 수 있습니다. 블로그의 게시물은 많은 태그를 가질 수 있으며 태그는 많은 게시물에 첨부됩니다.

다형성; 당신은 결코 정말로 걱정할 필요는 없겠지만 아이디어는 이미지가 많은 다른 대상들에 속할 수 있지만 다른 방식으로 존재할 수 있다는 것입니다. 갤러리 회원 또는 사용자의 미리보기 이미지 또는 블로그 제목 이미지 등과 같이 관계형 데이터 매핑을 코드 명과 재사용 가능성으로 분해합니다. 재량은 많은 사람들이 이것을 어떻게/언제 사용하는지에 대해 서로 다른 견해를 가지고 있음을 알립니다.

희망이 도움이됩니다. 내가 당신을 도우려는 시도가 있거나, 내가 찾던 것을 놓친 경우, 알려주십시오.

+0

답장과 설명에 감사드립니다. packageInfo는 1 개만 존재하지 않습니다. foreach 패키지에는 packageinfo가 있습니다. 위의 사항을 1 분 안에 실행하고 어떤 어려움을 겪을지라도 나눌 것입니다! 다시 고마워. :) 추신. 귀하의 설명은 워드 프로세서에 있어야합니다 .. 훨씬 더 많은 감각을 만들어 워드 프로세서에 무엇입니까 ... – Jeroen

+0

글쎄 그것은 관계 arent 올바른 것 같습니다. (나는 단지 목표와 패키지로 시도했다.) 다 - 대 - 다 관계를 사용한다면 관련 패키지를 검색 할 수있다. 위의 관계로 아무것도 표시되지 않습니다. – Jeroen

+0

잠에서 깨어나 일을 시작했습니다. 내 지역에 복제하는 데 몇 분을 보내고 내가 무엇을 찾을 수 있는지 보도록하겠습니다. – dasper