【发布时间】:2016-06-08 11:33:01
【问题描述】:
我的查询如下:
$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]);
} );
这个查询使用了内连接,返回的数据自然看起来像
|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 |
-------------------------------------------------------
在看来,在 foreach 迭代之后,我每行都有生产者和产品:
=============================
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()?
【问题讨论】:
标签: cakephp cakephp-3.0 has-and-belongs-to-many cakephp-3.x