0
Users UserChallenges(user_id,challenge_id) Challenges(start,end)
나는 주어진 timerange 내에서 사용자의 모든 UserChallenges을 얻으려면 :laravel 어디 조인하지 않고 관련 테이블에 대한 기준?
$challengeIds = Challenge::where('start', '>=', $timestamp)
->where('end', '<=', $timestamp)->pluck('id');
UserChallenge::where('user_id', $userId)->whereIn('id', $challengeIds)->get();
내가 조인을 사용하여 하나 개의 쿼리에서 그것을 할 수 있다는 것을 알고 있지만 나는를 사용하여 더 웅변과 같은 방법을 선호 나는 모델에 셋업 한 관계들. 어떻게 든 가능합니까?
$users = User::where('id', $userId)
->whereHas('challenges', function ($q) use ($timestamp) {
$q->where('start', '>=', $timestamp)
->where('end', '<=', $timestamp);
})->get();
또한 사용자 모델에서 belongsToMany
방법을 정의해야합니다 :
원하는 것을 100 % 이해할 수는 없지만 관계 및 WhereHas() 메소드가 도움이된다고 생각합니다. https://laravel.com/docs/5.5/eloquent-relationships#querying-relationship-existence –