계산이 필요하고 결과를 다시 얻거나 각 행에 대해 매번 쿼리를 수행하고 싶지는 않습니다. 이것이 열망하는로드를 원하는 이유입니다.
열망한로드와 hasManyThrough 관계 계산 (숫자 만 필요)
Admins
id
Posts
id
admin_id
Comments
id
user_id //nullable (null if comment from admin)
admin_id //nullable (null if comment from user)
news_id
가 지금은 하나의 관리자의 모든 게시물과 게시물에 대한 모든 의견을 검색하지 않고, 그 게시물에서 계산 모든 의견을 검색 할 만 COUNT :
나는 다음과 같이 세 테이블이 덧글, n + 1 쿼리 문제를 피하기 위해 열심히로드;
여기에 우리가 관계는 다음과 같은 열망로드와 함께 사용할 수 있도록해야한다고 생각 : news_id이 Admins
테이블에 있지 않기 때문에 여기에
//admin model
public function commentsCountRelation()
{
return $this->hasManyThrough(Comment::class, News::class, 'admin_id', 'news_id')
->selectRaw('news_id, count(*) as count')
->groupBy('news_id');
}
--Look 내가 hasManyThrough
관계를 사용했다.
가 그럼 난, 속성을해야처럼 easyly 수를 액세스 할 수 :
public function getCommentsCountAttribute()
{
return $this->commentsCountRelation->first()->count ?? 0;
}
그런 다음 원하는 액세스 :
$admin = Admin::with('commentsCountRelation')->findOrFail($id);
$admin->commentsCount;
를하지만 항상 null
를 반환, 그 이유는? 어떤 도움은 매우 hasManyThrough
을 사용할 필요가 없어
내가 이해하지 못했다
은 어떤 관계와
withCount
방법을 사용합니다. 앱에 여러 개의 관리자가 있으며 모든 사용자에게 게시물이 있습니다. 이제 특정 관리자 및 모든 의견의 모든 게시물이 필요합니다. 질문에서 나는 테이블 구조에 대해 설명했으며'Admin' 모델로 작업하는 동안 코멘트 수를 필요로합니다. 어떻게 설명 할 수 있습니까? 'hasManyThrough'없이이 작업을 수행합니까? 모든 관리자의 게시물 수는이 관리자의 게시물 수를 빼고 싶지 않습니다. 내가 필요 같은이 (루프 후)'$ 관리 -> 포스트> commentCount' 나는 것 엔 당신이 나에게 몇 가지 코드 예제를 제공하거나 간단한 – APu관계에 대해 설명하면 감사 :'Admin'은''와 hasMany'있다 Post'는'hasMany'와'Comment'를 가지고 있습니다 – APu
나는 여러분의 방법이 열심히로드하는 것을 사용하지 않는다고 생각합니까? 그렇습니다. 또한'$ admin-> post-> comments-> count()'대신에 여러분의 언급 방법을 사용하여 효율성이 얼마나되는지 알려주시겠습니까? – APu