1

私は次のSQLステートメントを持っています

SELECT a.* FROM accounts a 
JOIN account_friends f 
ON f.friend_id = a.id 
WHERE f.account_id = 12;

その結果、次のようなものになります

id    username    password    email
14      test        test       ..
15      test2       test       ..

私ができないことは、これをzendステートメントに変換することです。私はこれを試しました

    $accFriendTable = new Default_Model_DbTable_AccountFriends();
    $query = $accFriendTable->select()->setIntegrityCheck(false);
    $query->from(array('a' => 'accounts'), array('a.*'));
    $query->join(array('f' => 'account_friends'), 'f.friend_id = a.id');
    $query->where('f.account_id = ?', $this->_id);
    $friendsList = $accFriendTable->fetchAll($query);

これにより、accountsテーブルとaccount_friendsテーブルの両方の列が選択されます。

id    username    password    email    account_id    friend_id
1      test        test        ..         12             14
2      test2       test        ..         12             15

どんな助けもいただければ幸いです:)

4

1 に答える 1

0

デフォルトではすべての列から取得されるため、結合されたテーブルから必要な列の配列を指定する必要があります。

NULLそして、以下のように列を通過させたくない場合は、

$query->join(array('f' => 'account_friends'), 'f.friend_id = a.id',NULL);
于 2013-03-01T13:49:50.720 に答える