2014-07-25 3 views
0

나는 대부분 Eloquent를 이해하지만 나는 많은 관계를 이해하는 데 약간의 어려움이있다.Laravel/Eloqeunt의 Many to Many 관계

저는 샘플 데이터베이스를 디자인하고 있습니다. 여러분이 올바른 방법을 이해하도록 도와 줄 수 있기를 바랍니다.

표 1 카테고리

  • cat_id
  • cat_name

표 2 갤러리

  • ,321 0
  • gallery_name

표 3 : galleryCategories

  • cat_id
  • gallery_id

어떻게 내가 내 모델에 대해 갈 것

? 나는이 주제를 발견했지만, 꽤 옳은 것처럼 보이지 않았다. 어쩌면 그것이 내가 필요한 것보다 좀 더 복잡한 관계이기 때문일 수도 있습니다. 제품에 용어가있는 반면 제품에는 용어가 포함되어 있기를 기대하기 때문에 논리가 혼란 스럽다고 생각합니다.

내 샘플을 설명해 주시면 belongsToMany()hasMany() 방법과 매개 변수를 더 잘 이해할 수 있습니다. 또한 외래 키 매개 변수를 사용하지 않는 몇 가지 예와 혼동합니다.

감사합니다!

+0

카테고리와 갤러리의 관계는 무엇입니까? – lowerends

답변

1

는 스키마 작동하려면이 필요합니다

// Category model 
protected $primaryKey = 'cat_id'; 

public function galleries() 
{ 
    return $this->belongsToMany('Gallery', 'galleryCategories', 'gallery_id', 'cat_id'); 
} 

// Gallery model 
protected $primaryKey = 'gallery_id'; 

public function categories() 
{ 
    return $this->belongsToMany('Category', 'galleryCategories', 'cat_id', 'gallery_id'); 
} 

// then: 
$category = Category::first(); 
$category->galleries; // collection of Gallery models 

그것을 웅변 규칙을 준수하려면를, 당신은 필요 :

// tables 
categories: id, ... 
galleries: id, ... 
category_gallery: id, category_id, gallery_id [, timestamps] 

// models 
// Category 
public function galleries() 
{ 
    return $this->belongsToMany('Gallery'); 
} 

// Gallery 
public function categories() 
{ 
    return $this->belongsToMany('Category'); 
} 

제 2 회 솔루션은 더 나은 방법입니다 대부분의 프레임 워크를 만들고 싶지만 스키마에 의존하려면 Eloquent를 조정하면됩니다.


참고 hasMany 피봇 테이블 대다 관계를 들어, 양단 belongsToMany을 사용하면서 belongsTo, 그 대응하고, 1 m의 관계이다.

+0

고마워요. 정말 고마워요. (추신 : 나는 당신이 갤러리 모델과 오타를 만든 것 같아요, 메서드 이름은 카테고리() 맞아야합니까?) –

+0

확실히, 복사 붙여 넣기. 이제 좋아. –