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)。代码应该放在哪里?我在哪里可以看这些文件或者其他关于这个的东西?