使用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类似条件的一个定义来做,但即便如此我仍然不确定。最终,这将根据交叉表条件分支到多表连接,因此不确定如何开始实现此目的。
答案 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'