카테고리 목록을 보여 주며 각 카테고리 내의 기사 수를 표시합니다. 예상 된 결과를 얻었지만 N + 1 문제가 발생했습니다.N + 1 문제없이 전체적인 모델을 로딩하는 방법
내 CategoriesController
인덱스 기능 :
public function index()
{
return View::make('categories.index', [
'articleCategories' => Category::where('type', 'articles')->orderBy('name')->get(),
]);
}
Category
모델이 기사에 대한 많은 관계 :
public function articles()
{
return $this->hasMany('Article');
}
내 categories.index
보기 :
@foreach($articleCategories as $articleCategory)
<p>
{{ HTML::link(URL::route('articles.category', array('category' => Str::slug($articleCategory->name))), $articleCategory->name) }}
{{ $articleCategory->articles->count() }}
</p>
@endforeach
편집 : 그것을 만약 내가 열심히 모든 관련 기사를로드 열심히하지만, 난 단지 과도한 것 같습니다 문서 개수가 범주를 필요 이후 작동합니다. 열심히 기사를로드하고 ->count()
성능에 영향을 줍니까? 아니면 이것을 수행하는 가장 좋은 방법입니까?
왜하지 않는다 :'수 ($ articleCategory-> 기사),'? 나는 그것이 가장 쉽고 빠르다고 생각합니다. – ArjanSchouten
답장을 보내 주셔서 감사합니다. 나는 그 방법으로 작업하게 만들었지 만 이상적으로는 관련된 모든 기사를로드하고 싶지 않습니다. 나는 내 질문을 업데이트했다. –
여러 개의 Eloquent 모델을로드하는 것이 잔인합니다. 100 개의 행이 있다면 걱정할 필요가 없습니다.하지만 수천 개의 행에 대해서는 확실히 그렇게하지 않을 것입니다. –