だから私はSubject
がStack
で、これにはQuestion
が含まれています。すべての質問には答えがあり、答えはすべてStack
に数えたいと思いますが、私は立ち往生しています。熱心に読み込まれたリレーションの返り値Laravel
これは、私が何をしようとしている私がいじってきた多くのソリューションの1つです:
$subjects = Subject::with(['stack.question', 'stack.answersCount'])->get();
return $subjects;
Subject
モデルは次のような関係があります。
public function stack(){
return $this->hasMany(Stack::class);
}
そして、我々は見れば関係がどのように構築されるかについてのStack
モデルで:
public function question(){
return $this->hasMany(Question::class);
}
public function answers(){
return $this->hasMany(Answers::class);
}
public function answersCount(){
return $this->answers()->selectRaw('answer, count(*) as aggregate')->groupBy('answer');
}
しかし、私はreturn $subjects
、answer_count
は空です。
"answers_count": []
私はSQLで同じクエリを実行すると、私は空でない結果を得るので、それは非常に紛らわしいです。
select answer, count(*) as aggregate from `answers` where `answers`.`stack_id` in ('1', '6') group by `answer`
correct 9
wrong 4
どのようにすべての回答を数えますか?グループ化する?
と思えます代わりに、私は何とか説明したようにカウントを取得することは可能でしょうか?それはそれを行うための非常にクリーンな方法のようです。そして、なぜそれが動作しないのか理解できません。 – Adam
私はそれを調べる必要があります私はあなたがこれを試してもうまく思う? –
はい私はそれをテストし、それは動作します。私は今、ブレードファイルでその概念を使用していますが、これはn + 1の問題です。これは雄弁なバグですか? – Adam