2017-11-30 8 views
0

그래서 나는 세 가지 모델이 있습니다체인화 모델을 함께 Laravel 웅변은

도전

사용자

참가자를

도전은 단지 기본 키

사용자가 그 기본 키가

및 Entrant에는 외래 키가 있습니다. s challenge_id and user_id

도전 과제에서 질문 할 때 (나는 도전 과제 ID가 있습니다) 도전 과제와 관련된 모든 사용자를 얻는 가장 좋은 방법은 무엇입니까? 필자는 본질적으로 모든 사용자 데이터와 결합 된 모든 참가자 데이터의 집계를 원합니다. 나 hasManyThrough (https://laravel.com/docs/5.5/eloquent-relationships) 메서드를 찾고 있었지만 작동시키지 못했습니다. 당신이 찾고있는

+2

이 실제로'belongsToMany' 곳'entrant' 것 피봇 테이블입니다 ... 당신이 당신의 설득력 각 모델 사이의 적절한 관계를 설정 한 것으로 가정합니다. – user3158900

답변

0

코드는 다음과 같습니다

Entrant::where('challenge_id', $challengeId)->with('users')->get(); 

코드의이 작품의 핵심은 각 참가자와 연결된 사용자를 eagerly loadswith 부분입니다. 관련 데이터를로드하는이 방법은 N + 1 문제를 해결하고 데이터베이스의로드를 줄입니다.

이 코드

User  hasMany Entrant 
Challenge hasMany Entrant 
Entrant belongsTo User 
Entrant belongsTo Challenge 
+0

작은 추가 설명을 해 주셔서 감사합니다. 언제든지 열심히로드 할 수 있습니다. –