1
내 쿼리는 다음과 같습니다CakePHP의 3 _matching, 어떻게 포맷 결과 데이터
$test = $this->Producers->find()
->hydrate(true)
->select(['Producers.id','Producers.name', 'Products.id', 'Products.name']);
$test->matching(
'Products.Categories', function ($q) {
return $q->where(['Categories.id' => 22]);
});
이 쿼리 자연스럽게 내가 프로듀서가 foreach는 반복 한 후보기에서
|Producers_id|Producers_name|Products_id|Products_name|
-------------------------------------------------------
|1 |Canon |1 |EOS 1000D |
-------------------------------------------------------
|1 |Canon |2 |EOS 300D |
-------------------------------------------------------
|1 |Canon |3 |EOS 50D |
-------------------------------------------------------
|3 |Nikon |6 |D600 |
-------------------------------------------------------
|3 |Nikon |7 |D100 |
-------------------------------------------------------
과 같은 내부 데이터를 결합하고 반환 사용 각 행의 제품 :
=============================
Producer: Canon
-----------------------------
EOS 1000D
=============================
Producer: Canon
-----------------------------
EOS 300D
=============================
Producer: Canon
-----------------------------
EOS 50D
=============================
하지만 난이 기대하는 형식의 데이터와 같은 :
=============================
Producer: Canon
-----------------------------
EOS 1000D
-----------------------------
EOS 300D
-----------------------------
EOS 50D
=============================
Producer: Nikon
-----------------------------
D600
-----------------------------
D100
=============================
최상의 데이터 서식 지정 방법은 무엇입니까? 보기 또는 모델/컨트롤러에 있습니까? MapReduce()를 사용할 수 있습니까? Cake\Collection\Collection
를 사용
'$ test'은 [** 이미 모음입니다 **] (http://book.cakephp.org/3.0/en/orm/query-builder.html#queries-are-collection-objects) (종류). 또한 당신은'name'으로 그룹화해야 할 것입니다. OP에 의해 보여지는 질의와 함께, 결과적인 entites에는'Producers_name'이 없습니다. – ndm
code-kobolt : 위대한 작품, 감사합니다! NDM 당신은 단지에 바로 필요가있다 : '$ byProducer = $ 테스트 -> GROUPBY ('Producers_name') -> toArray();와'; "''케이크 \ 컬렉션 \ 컬렉션을 사용하여"없는' $ collection = 새로운 Collection ($ test);' –