2013-01-11 17 views
0

두 테이블, GalleriesGallery_items이 있습니다. 에서 Galleries 나는 저자가 누구인지와 같은 정보를 저장합니다. Gallery_items에서 갤러리에 포함 된 각 그림을 저장합니다. Laravel의 관계

는 지금은 제목이 모나리자 저자는 레오나르도 다 빈치입니다 각 갤러리 의 첫 번째 사진을 얻을 싶다.

Gallery_items::group_by('gallery_id')->where('title', '=', 'mona lisa')->gallery()->where('author', '=', 'Leonardo da Vinci'); 

을하지만 그것은 작동하지 않습니다

나는 시험했다. Method [gallery] is not defined on the Query class. 오류가 발생합니다.

하지만 gallery() 모델에 추가했습니다.

class Gallery_items extends Eloquent 
{ 
    public function gallery() 
    { 
     return $this->belongs_to('gallery'); 
    } 
} 

어떻게해야합니까? 하나의 쿼리로도이 작업을 수행 할 수 있습니까? "Constraining Eager Loading"이 아마도 대답입니까 (나는 그게 뭔지 모르겠다)?

답변

2

덕분에 나는 다른 관점에서 문제를보기 시작하고 지금은 JOIN 문을 사용하여 문제를 해결했다.

Gallery_items::join('gallery', 'Gallery_items.gallery_id', '=', 'gallery.id'))->group_by('gallery_id')->where_title_and_author('Mona Lisa', 'Leonardo da Vinci'); 
1

이 작동합니다 : @AndHeiberg에

Gallery_items->group_by('gallery_id')->where_title_and_author('Mona Lisa', 'Leonardo da Vinci'); 
+0

아니요. 'Gallery_items'에는'author'라는 열이 없으므로 아니요. 이 칼럼을 가진 것은'Gallery'입니다. – Sawny