5

私は 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 クエリでそれを達成する方法はありますか?

4

1 に答える 1