Zend Database Multi表通过Join“选择”

时间:2012-10-08 21:55:56

标签: php zend-framework postgresql

使用Zend DB。我试图弄清楚如何使用DB Class编写此查询。

select 
   org.orgid
   org.role
   user.userid
   user.firstname
from orgTable org
join userTable user on org.userid = user.userid
where org.orgid = 'generated-id'

从我理解的文件或者我认为我理解如何使用AS类似条件的一个定义来做,但即便如此我仍然不确定。最终,这将根据交叉表条件分支到多表连接,因此不确定如何开始实现此目的。

3 个答案:

答案 0 :(得分:2)

我认为这就是你在寻找什么

$db = Zend_Db::factory( ...options... );

$select = $db->select()
             ->from(array('org' => 'orgTable'),
                    array( 
                        'orgid' => 'org.orgid', 
                        'role'  =>'org.role',
                        'userid'  =>'user.userid',
                        'firstname' =>'user.firstname'
                    ))
             ->join(array('user' => 'userTable'),
                    'org.userid = user.userid',array())
            ->where('org.orgid = ?',$generated_id);

答案 1 :(得分:0)

这是一个Zend_Db_Select,它会返回您要查找的结果。

    $select = $db->select()
                 ->from(array('org' => 'orgTable'), array('orgid', 'role'))
                 ->join(array('user' => 'userTable'), 'org.userid = user.userid', array('userid', 'firstname'))
                 ->where('org.orgid = ?', 'generated-id');

您可以使用表名称的数组表示法来获取查询中的别名。

希望有所帮助。

答案 2 :(得分:0)

zend framework 2 中,以下代码可以帮助您找到所需内容

$generated_id = 1 ;

$select = new \Zend\Db\Sql\Select( array('org' =>'orgTable'));

$select->columns(array('orgid','role') )
       ->join( array('user' => 'userTable'),  
               'org.userid = user.userid', 
               array('userid','firstname')
       )->where( array('org.orgid' => $generated_id ) );

如果您的适配器平台是mysql,那么用于打印sql

$mysqlPlatform = new \Zend\Db\Adapter\Platform\Mysql();
echo $select->getSqlString(  $mysqlPlatform );

将sql打印为

SELECT 
     `org`.`orgid` AS `orgid`, 
     `org`.`role` AS `role`, 
     `user`.`userid` AS `userid`, 
     `user`.`firstname` AS `firstname` 
FROM 
     `orgTable` AS `org` 
         INNER JOIN `userTable` AS `user` 
         ON `org`.`userid` = `user`.`userid` 
WHERE 
     `org`.`orgid` = '1'