回答

收藏

教义如何在其中使用另一个sql查询编写WhereIn()

技术问答 技术问答 427 人阅读 | 0 人回复 | 2023-09-12

我在SQL有以下查询/ d# B; v" F9 z: D2 I
... where group_id IN (select group_id from alert where monitor_id = 4);我想用Doctrine但我不知道怎么写,IN select添加到WHEREIN()子句中!任何想法 ?
4 w+ {( {+ n& y这就是我所做的( p' T) N% @: L/ E9 |
$q = $this->createQuery('u      ->select('u.email_address      ->distinct(true)    // ->from('sf_guard_user u      ->innerJoin('u.sfGuardUserGroup ug      ->where('ug.group_id IN(select group_id from alert where monitor_id=?',$monitor);$q->execute();在sfGuardUserTable.class中:! z; Z. ^7 Y2 k1 T% H
public function getMailsByMonitor($monitor)              $q = Doctrine_Query::create()->from("alert a")->where("a.monitor_id",$monitor);        $groups_raw = $q->execute(array(),Doctrine_Core::HYDRATE_ARRAY);        $groups = array();;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;print_r($groups_raw);        foreach ($groups_raw as $gr)                  $groups[] = $gr->id; //line 3333                                                                                                                                                                                                                               $q2 = $this->createQuery('u             ->select('u.email_address             ->distinct(true)                ->innerJoin('u.sfGuardUserGroup ug             ->whereIn("ug.group_id",$groups);        return $q2->execute();    }                6 y7 X+ G6 C2 z4 C% f& \
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则