Doctrine 条令子查询语法

Doctrine 条令子查询语法,doctrine,Doctrine,我需要从一个sql查询中复制一个规则和语句 并从evaluateur_候选资格e2中选择e2.Candidate_id_ca,其中 e、 候选资格\u id\u ca=e2.候选资格\u id\u ca和e2.角色\u评估者= “evaluateur”为空 很容易用我尝试过的理论来重现这一点: $query->andWhere('(SELECT e2.candidature_id_ca FROM evaluateur_candidature e2 WHERE e.candidatu

我需要从一个sql查询中复制一个规则和语句

并从evaluateur_候选资格e2中选择e2.Candidate_id_ca,其中 e、 候选资格\u id\u ca=e2.候选资格\u id\u ca和e2.角色\u评估者= “evaluateur”为空

很容易用我尝试过的理论来重现这一点:

    $query->andWhere('(SELECT e2.candidature_id_ca FROM evaluateur_candidature e2 WHERE
e.candidature_id_ca = e2.candidature_id_ca AND  e2.role_evaluateur = ?)' , 'evaluateur' , 'IS NULL ');
但我明白了

找不到e2类

有人知道我怎么做吗?提前谢谢

在此更新完整的条令查询:

    $query = Doctrine_Query::create()
                    ->from('Candidature c')
                    ->innerJoin('c.RoleActeur ra_cand ON c.id_ca = ra_cand.id_ca AND ra_cand.id_role = 4')
                    ->innerJoin('ra_cand.Acteur ac_cand')
                    ->innerJoin('c.CandidatureActeur ca ON c.id_ca = ca.id_ca')
                    ->where('c.id_stca = 5');

    $query->leftJoin('c.EvaluateurCandidature ec');

    //here i would like to get the "Candidature collection" who not have records in the table EvaluateurCandidature when the column role_evaluateur is set to  "evaluation". 


    //$query->andWhere('ec.role_evaluateur = ? ) ? )', 'evaluateur' ,'IS NULL ');
  $query->andWhere('(SELECT e2.candidature_id_ca FROM evaluateur_candidature e2 WHERE
e.candidature_id_ca = e2.candidature_id_ca AND  e2.role_evaluateur = ?)' , 'evaluateur' , 'IS NULL ');

根据您的描述,您可以在join EvaluateUrConditure中包含另一个条件,即仅加入role_evaluateur设置为evaluation的记录,然后仅选择EvaluateUrConditure id为null的记录


你能发布实体定义和业务需求吗?比如你想在这里实现什么?谢谢你的回复,我刚刚更新了我的帖子
$query = Doctrine_Query::create()
                ->from('Candidature c')
                ->innerJoin('c.RoleActeur ra_cand ON c.id_ca = ra_cand.id_ca AND ra_cand.id_role = 4')
                ->innerJoin('ra_cand.Acteur ac_cand')
                ->innerJoin('c.CandidatureActeur ca ON c.id_ca = ca.id_ca')
                ->leftJoin("c.EvaluateurCandidature ec WITH ec.role_evaluateur = 'evaluation'")
                ->where('c.id_stca = 5')
                ->andWhere('ec.id IS NULL');