5

Zend Framework を使用して 2 つのテーブルを結合する方法はいくつかあるようですが、これまでに行ったことがないため、どの方法が最適かわかりません。

これは私がやろうとしていることです...

データベースに 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 でこれを行うにはどうすればよいですか?

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 に答える