也许我为此愚蠢,但我希望从我的数据库中获得多对多的结果集。
我有一个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"}, ...]}]
有人有想法吗?
答案 0 :(得分:1)
您无法在SQL中“加入”n对n关系。你必须激发一个额外的查询,意思是:
$result = [];
foreach ($customers->getResults() as $item) {
$result[] = array_merge(
$item->toArray(),
['groups' => $item->getGroups()->toArray()]
);
}
return $result;