似乎有几种不同的方法可以使用Zend Framework连接两个表,但我以前从未这样做过,所以我不知道哪种方法最好。
这就是我要做的......
我的数据库中有3个表:
users
( id , name )
groups
( id , name )
group_members
( id , group_id , user_id )
我正在尝试查找用户所属的组并将其显示给用户。这个SQL语句几乎完成了这项工作(虽然可能有更好的方法来编写它)。它只返回我关注的列,它们是组的id和标题。
SELECT groups.id, groups.title
FROM group_members
INNER JOIN groups
ON groups.id = group_members.group_id
WHERE user_id = $userId
如何使用Zend Framework执行此操作?
答案 0 :(得分:9)
最后想出了如何做到这一点。如果你有更好的方法,请告诉我。
$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);
这将返回一个只包含id和title列的表。空array()
是删除我不关心的列的关键。然后我可以用结果集做点什么。
foreach ($resultSet as $row) {
//do something with $row->id or $row->title
}
答案 1 :(得分:0)
不需要使用Join,我们可以使用Zend_Db_Table代替MVC模式的原因。我有这个想法来自菲利普的here,#10。(可能他们称之为“表数据网关”?)