symfony - Doctrine ManyToMany, find related and no related results -
i have entity called tournament users can register participate in.
the relationship between 2 entities manytomany , need create view of symfony2 in list tournaments, or without registered users can join.
this doctrinequerybuilder
$em->createquerybuilder('d') ->select('d, i, u') ->leftjoin('d.item','i') ->leftjoin('d.users','u') ->where('d.active = 1') ->andwhere('d.state = 1') ->orderby('d.datestart', 'asc'); i need number of users have joined tournament.
preamble
there various way achieve want. can create sub-query count, simpler solution let doctrine handles you.
the solution described below based on doctrine lazy/eager loading capability. when doctrine loads entity, populate it's associations, either lazily or eagerly (default lazy).
solution
assuming tournament entity maps users association manytomany relation. can create new method counts tournament->users.
manytomany associations populate entity property (in cases $users) arraycollection.
a method called countusers trick, example implementation below:
... class tournament { ... /** * @manytomany(targetentity="user") * @jointable(name="tournament_users", * joincolumns={@joincolumn(name="user_id", referencedcolumnname="id")}, * inversejoincolumns={@joincolumn(name="tournament_id", referencedcolumnname="id"} * ) **/ private $users; ... public function countusers(){ return $this->users->count(); } in view when iterating on collection of tournaments, call $tournament->countusers() method display count.
references:
arraycollection: http://www.doctrine-project.org/api/common/2.1/class-doctrine.common.collections.arraycollection.html
Comments
Post a Comment