5

看起來好像有幾種不同的方式可以使用Zend Framework來連接兩個表格,但是我從來沒有這樣做過,所以我不知道哪種方法是最好的。使用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框架?

回答

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 
} 
0

不需要使用Join,我們可以使用Zend_Db_Table來代替MVC模式的原因。我從Filip得到了這個想法here,#10(也許他們稱之爲「Table Data Gateway」?)

+1

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分,並提供鏈接供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 – ekad 2015-03-02 08:05:11

相關問題