5

似乎有几种不同的方法可以使用 Zend 框架连接两个表,但我以前从未这样做过,所以我不知道哪种方法是最好的方法。

这就是我正在尝试做的...

我的数据库中有 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 框架做到这一点?

4

2 回答 2

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
}
于 2009-11-24T00:45:48.467 回答
0

不需要使用 Join,我们可以使用 Zend_Db_Table 来代替 MVC 模式的原因。我在这里得到了这个想法表格,Filip 的#10。(也许他们称之为“表数据网关”?)

于 2009-12-29T22:21:41.457 回答