1

我在 Zend_Db_Select 上遇到了一些麻烦,自从我使用它很久以前(-:我需要一个这样的结果数组:

USER 0
 ID -> 1
 MY_NUMBERS -> (array)
    -> 1 ONE
    -> 2 TWO

USER 1 (array)
 ID -> 2 (int)
 MY_NUMBERS -> (array)
    -> 1 ONE
    -> 2 TWO
    -> 3 THREE
    -> 10 TEN

这是我的查询的一部分

$select->from(array('USERS' => $table))
    ->join(
        array('USERS_NUMBERS' => 'USERS_HAS_NUMBERS'), // many to many
        'USERS.ID = USERS_NUMBERS.USER_ID'
    )
   ->joinLeft(
        array('N' => 'NUMBERS'),
        'USERS_NUMBERS.NUMBER_ID = NUMBERS.ID', 
        array('MY_NUMBERS' => 'NUMBERS.NUMBER')
   );

但是在我为每个现有关系返回一条记录的那一刻,如果用户 1 有 5 个数字,我会为该用户返回 5 条完整记录。

我知道我的选择在获取我需要的数组时是错误的,但我必须知道该怎么做:-)

4

1 回答 1

1

我会使用 Zend_Db_Table 并在其中设置关系,因此您的代码也更具可读性。http://framework.zend.com/manual/1.12/en/zend.db.table.relationships.html

然后,当您拥有用户时,您可以执行以下操作:

$user->findDependentRowset('numbers');
于 2013-02-07T15:55:27.780 回答