2017-03-29 1 views
0

나는 앨범과 이미지의 간단한 설정을 가지고 있으며 각 앨범에는 많은 이미지가 있습니다. 나는 모든 데이터 벌금을 얻을 수 있지만이 폐쇄과 같이 통과 시도 나는 3. 이미지의 반환 수를 제한하려면 :Laravel 관계에 대한 Eloquent 한도 제한 결과

Album::with(['images' => function($query) { $query->take(3);}])->get(); 

이 3 이미지의 수를 제한하지 않습니다하지만 총을 제한 이미지 수를 3으로 설정했지만 각 앨범을 3 개의 이미지로 제한하고 싶습니다. 따라서 첫 번째 앨범에는 예상대로 3 개의 이미지가 표시되지만 다른 모든 앨범에는 이미지가 표시되지 않습니다.

나는 그렇게처럼 내 모델에 새로운 방법을 추가하는 시도 :

public function limitImages() 
{ 
    return $this->hasMany('App\Image')->limit(3); 
} 

그리고 나는 내 컨트롤러이 전화 :

Album::with('limitImages')->get(); 

을하지만이에 반환 카운트 이미지를 제한하지 않습니다 모두

+0

첫 번째 폐쇄 시도에서'take (3) '대신'$ query-> limit (3)'을 사용해 보았습니까? – GiamPy

+0

그래, 컨트롤러와 모델 모두에서 스와핑 limit() 및 take()를 시도했지만 여전히 동일하게 작동합니다. 첫 번째 앨범은 2 장, 나머지 앨범은 이미지가 없습니다. – twigg

+0

같은 일이 발생합니다. 이것은 흥미로운 질문입니다 !! – devk

답변

2

이 작업을 수행하기 위해 N + 1 문제가 발생했다고 생각합니다.

Album::with('images')->get()->map(function($album) { 
    $album->setRelation('images', $album->images->take(3)); 
    return $album; 
});