Doctrine 原则DQL:选择与FK表具有子项/关系的实体

Doctrine 原则DQL:选择与FK表具有子项/关系的实体,doctrine,dql,Doctrine,Dql,假设我的设置是 Teachers (id, name) Students (id, name, teacher [FK]); 我如何在DQL中选择有学生的教师?我想大概是这样 select t FROM Entities\Teachers t WHERE count(t.students) > 0 但是我知道计数(t.students)>0是错误的。。。那我用什么 更新 那么,多对多自我参照关系是什么?其中用户可以是教师或学生,也可以同时是教师和学生。。。下面的代码。。。什么是DQL

假设我的设置是

Teachers (id, name)
Students (id, name, teacher [FK]);
我如何在DQL中选择有学生的教师?我想大概是这样

select t FROM Entities\Teachers t WHERE count(t.students) > 0 
但是我知道计数(t.students)>0是错误的。。。那我用什么

更新 那么,多对多自我参照关系是什么?其中用户可以是教师或学生,也可以同时是教师和学生。。。下面的代码。。。什么是DQL来获取有学生的用户

/** @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;

在这种情况下,可以使用联接

select t FROM Entities\Teachers as t 
innerjoin Entities\Students as s on t.id = s.teacher
若你们能像下面这样建立你们的基础,那个么你们就能很容易地处理你们的案件。从我的经验来看,我知道教义可以以最好的方式处理多对多关系

$this->hasMany('User as Students', array(

        'local'     => 'id',

        'foreign'   => 'student_id',

        'refClass'  => 'UserToStudents',

        'onDelete'  => 'CASCADE'));

$this->hasMany('User as Teachers', array(

        'local'     => 'id',

        'foreign'   => 'teacher_id',

        'refClass'  => 'UserToTeachers',

        'onDelete'  => 'CASCADE')); 

谢谢

好的,现在感谢我所做的自我引用实体。查看我的更新我已经更新了我的评论。请让我清楚地知道你还想知道什么。嗯。。。我不熟悉这一点(但这是从原则1.2?因为我使用的是2.0)。代码应该放在哪里?我在哪里可以看这些文件或者其他关于这个的东西?