私は CakePHP が初めてで、次の問題があります。
テーブル「画像」、「キーワード」、「キーワードカテゴリ」があります。すべての画像には多くのキーワード (多対多) を含めることができ、すべてのキーワードにはカテゴリ (多対 1) があります。で画像のリストを取得する
$images = $this->Images->find()->contain(['Keywords', 'Keywords.KeywordCategories']);
次のような結果構造を返します。
[
{
"id":1,
"keywords":[
{
"keyword":"Dog",
"keyword_category":{
"title":"Animal"
}
},
{
"keyword":"Cat",
"keyword_category":{
"title":"Animal"
}
},
{
"keyword":"Black",
"keyword_category":{
"title":"Color"
}
}
]
}
]
それは問題ありませんが、キーワードを次のような構造のキーワード カテゴリ別にグループ化する必要があります。
[
{
"id":1,
"keyword_categories":[
{
"title":"Animal",
"keywords":[
{
"keyword":"Dog"
},
{
"keyword":"Cat"
}
]
},
{
"title":"Color",
"keywords":[
{
"keyword":"Black"
}
]
}
]
}
]
CakePHP クエリでそれを達成する方法はありますか?