推动多对多加入

时间:2014-01-27 11:34:14

标签: symfony join many-to-many propel

也许我为此愚蠢,但我希望从我的数据库中获得多对多的结果集。

我有一个Acl_Customer,Acl_Group和一个Acl_Customer_Group表。最后一个是客户和团队之间的交叉引用。

现在,我只想通过群组表上的联接来获取我的acl客户。

     $customers = CustomerQuery::create()
         ->joinCustomerGroup()
         ->paginate($page, $limit);

     return $customers->getResults()->getData();

这给我带来了以下内容:

[{"id":1,"username":"foo","email":"bar@baz.quux"}]

但我需要这样的事情:

[{"id":1,"username":"foo","email":"bar@baz.quux","groups":[{"name":"developer"}, ...]}]

有人有想法吗?

1 个答案:

答案 0 :(得分:1)

您无法在SQL中“加入”n对n关系。你必须激发一个额外的查询,意思是:

$result = [];
foreach ($customers->getResults() as $item) {
    $result[] = array_merge(
        $item->toArray(),
        ['groups' => $item->getGroups()->toArray()]
    );
}

return $result;