0

使用 Zend DB。我试图弄清楚如何使用 DB 类编写这个查询。

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 条件的一个定义的文件中,但即便如此我仍然不确定。最终,这将根据跨表条件扩展到多表连接,因此不确定如何开始。

4

3 回答 3

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);
于 2012-10-08T22:02:58.210 回答
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');

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

希望有帮助。

于 2012-10-08T22:07:31.947 回答
0

zend 框架 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'
于 2012-10-09T06:37:09.187 回答