2012-06-13 44 views
1

一鍵我有兩個表,一個用戶表和申請表:從表中選擇行與另一個表中的Zend

User 
    id 
    username 
application 
    id 
    user_id 
    ... 

爲了得到我想能夠選擇應用程序的應用通過應用程序ID或用戶名。要通過應用程序ID獲取應用程序非常簡單,但我不確定如何通過用戶名獲取應用程序。以下是我目前在我的模型中的相關代碼。

protected $_referenceMap = array (
    'User' => array (
     'columns'   => 'user_id', 
     'refTableClass'  => 'Application_Model_DbTable_User', 
     'refColumns'  => 'id' 
    ) 
); 

public function get_application($id) { 
    if(is_numeric($id)) { 
     $row = $this->fetchRow("id = $id"); 
    } else { 
     //get application by username 
    } 
    return $row->toArray(); 
} 

回答

2

如果我正確理解你的問題,我覺得你只是想:

$userRow = array_shift($this->findDependentRowset('User')); 

編輯:等待,不,這是不對的。一旦你已經得到正確的應用程序,這將找到用戶。

假設你有反向關係不顧,以及,你應該能夠做到這一點:

$userTable = new Application_Model_DbTable_User(); 
$userRow = $userTable->fetchRow('username = ?' , $username); // or whatever 
$applicationRow = $userRow->findParentRow('Application'); 
相關問題