My query looks like:
$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]);
} );
This query use inner join and returned data naturally looks like
|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 |
-------------------------------------------------------
In view, after foreach iteration i have producer and product for each row:
=============================
Producer: Canon
-----------------------------
EOS 1000D
=============================
Producer: Canon
-----------------------------
EOS 300D
=============================
Producer: Canon
-----------------------------
EOS 50D
=============================
But i expect formated data like:
=============================
Producer: Canon
-----------------------------
EOS 1000D
-----------------------------
EOS 300D
-----------------------------
EOS 50D
=============================
Producer: Nikon
-----------------------------
D600
-----------------------------
D100
=============================
What is the best data formatting practice? In view, or model/controller? Maybe use mapReduce()?