私は学生オブジェクトの配列を持っています。各学生は、配列コレクションとしての科目を持っています。各サブジェクトには異なる引数などに基づいて計算される関数getStatus()
があるため、サブジェクトエンティティのステータスには実際のプロパティはありません。文字列を返すゲッターに基づいて配列コレクション内の特定のオブジェクトを数える方法
完了し、進行中で、保留中の科目の数をカウントし、生徒ごとに表で表示するにはどうすればよいですか?私はこのように私のコントローラで私の学生を取得することができ
:ループと、おそらく、その後
$students = $em->getRepository(Student::class)->findAll();
とは何とかそれを数えるが、私はどのように得ることはありません。
this answerのように、配列コレクションにフィルタを実装する関数を作成すると思っていましたが、そのフィルタを使用してgetStatus()
をフィルタする方法を理解できません。
public function getSubjectsByStatus(string $status): ?Collection
{
$subjects = $this->subjects->matching(
Criteria::create()->where(Criteria::expr()->eq($this->getStatus(), $status))
);
return $subjects ?? null;
}
して、返されたコレクションで、カウントを行うが、eq()
の最初のパラメータは文字列でなければならないと私は持っていません。
私はまた、このような基準で->matching
を実装するために考えました文字列として使用できるサブジェクトエンティティのstatusプロパティ。プロパティを追加するのは良い考えではありません。
どのようにすべての科目、未決の科目、完了した科目、および優秀な科目で最善の方法を数えることができますか?