1

ユーザーテーブルとアプリケーションテーブルの2つのテーブルがあります。

User
    id
    username
application
    id
    user_id
    ...

アプリケーションを入手するには、アプリケーションIDまたはユーザー名のいずれかでアプリケーションを選択できるようにしたいと思います。アプリIDでアプリケーションを取得するのは簡単でした$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();
}
4

1 に答える 1

2

私があなたの質問を正しく理解していれば、あなたは次のことを望んでいると思います:

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

編集:待ってください、それは正しくありません。適切なアプリケーションを取得したら、ユーザーを見つけます。

逆の関係も否定されていると仮定すると、これを実行できるはずです。

$userTable = new Application_Model_DbTable_User();
$userRow = $userTable->fetchRow('username = ?' , $username); // or whatever
$applicationRow = $userRow->findParentRow('Application');
于 2012-06-13T18:28:16.710 に答える