Zend_Db_Select和N:N关系

时间:2013-02-07 13:36:46

标签: php zend-framework

我在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个完整记录返回 对于这个用户。

我知道我的选择是错误的,因为我需要它来获得数组,但我必须知道该怎么做: - )

1 个答案:

答案 0 :(得分:1)

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

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

$user->findDependentRowset('numbers');