我有两个表,一个用户表和一个应用程序表:
User
id
username
application
id
user_id
...
要获取应用程序,我希望能够通过应用程序ID或用户名选择应用程序。通过app {获取应用程序很简单$row = $this->fetchRow("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();
}
答案 0 :(得分:2)
如果我理解你的问题,我想你只想:
$userRow = array_shift($this->findDependentRowset('User'));
编辑:等等,不,这不对。一旦您获得了正确的应用程序,就会找到该用户。
假设你也有反对的关系,你应该能够做到这一点:
$userTable = new Application_Model_DbTable_User();
$userRow = $userTable->fetchRow('username = ?' , $username); // or whatever
$applicationRow = $userRow->findParentRow('Application');