教义如何在其中使用另一个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& \
解决方案: |
|
|
|
|
|