Doctrine DQL: Select entities having children/relations to FK table -
assuming setup
teachers (id, name) students (id, name, teacher [fk]);
how select in dql teachers have students? guess like
select t entities\teachers t count(t.students) > 0
but know count(t.students) > 0
wrong ... use then?
update
now abt many many self referencing relationship? user can teacher or student or both ... code below ... whats dql getting users have students?
/** @entity @table(name="users")) */ class user { /** * @id @column(type="integer") * @generatedvalue(strategy="auto") */ private $id; /** * @column(type="string", length="30") */ private $name; /** * @manytomany(targetentity="user", inversedby="teachers") * @jointable(name="teachers_students", * joincolumns={@joincolumn(name="teacher", referencedcolumnname="id")}, * inversejoincolumns={@joincolumn(name="student", referencedcolumnname="id")} * ) */ private $students; /** * @manytomany(targetentity="user", mappedby="students") */ private $teachers;
you can use join in case.
select t entities\teachers t innerjoin entities\students s on t.id = s.teacher
if can set base follows can handle case easily. far experience know doctrine can handle many many relation within best way.
$this->hasmany('user students', array( 'local' => 'id', 'foreign' => 'student_id', 'refclass' => 'usertostudents', 'ondelete' => 'cascade')); $this->hasmany('user teachers', array( 'local' => 'id', 'foreign' => 'teacher_id', 'refclass' => 'usertoteachers', 'ondelete' => 'cascade'));
thanks
Comments
Post a Comment