And*_*rew 5 zend-framework inner-join zend-db-table zend-db zend-db-select
看起来有几种不同的方法可以使用Zend Framework连接两个表,但我以前从未这样做过,所以我不知道哪种方法最好.
这就是我要做的......
我的数据库中有3个表:
users
( id , name )
groups
( id , name )
group_members
( id , group_id , user_id )
Run Code Online (Sandbox Code Playgroud)
我正在尝试查找用户所属的组并将其显示给用户.这个SQL语句几乎完成了这项工作(虽然可能有更好的方法来编写它).它只返回我关注的列,它们是组的id和title.
SELECT groups.id, groups.title
FROM group_members
INNER JOIN groups
ON groups.id = group_members.group_id
WHERE user_id = $userId
Run Code Online (Sandbox Code Playgroud)
如何使用Zend Framework完成此操作?
终于想出了如何做到这一点.如果你有更好的方法,请告诉我.
$db = Zend_Db_Table::getDefaultAdapter(); //set in my config file
$select = new Zend_Db_Select($db);
$select->from('groups', array('id', 'title')) //the array specifies which columns I want returned in my result set
->joinInner(
'group_members',
'groups.id = group_members.group_id',
array()) //by specifying an empty array, I am saying that I don't care about the columns from this table
->where('user_id = ?', $userId);
$resultSet = $db->fetchAll($select);
Run Code Online (Sandbox Code Playgroud)
这将返回仅包含id和title列的表.空的array()是删除我不关心的列的关键.然后我可以用结果集做一些事情.
foreach ($resultSet as $row) {
//do something with $row->id or $row->title
}
Run Code Online (Sandbox Code Playgroud)