0

1つのクエリで返そうとしている4つのモデル(Location-> StatisticsCategory-> StatisticsItem-> Statistics)があります。クエリがLocationのレベルで開始されるまで、結果は期待どおりです。その時点で、データの戻り値にはStatisticItemの3番目の関連付けまでのすべてが含まれますが、すべてのStatisticはnullです。第4レベルの関連付け(少なくともここでは)がデータを返さない理由はありますか?

以下は、AppModelでContainable動作がオンになっているStatisticsControllerで使用しているコードです。

$stats = $this->Location->find('all', array(
        'fields' => array(
            'Location.id',
            'Location.location'
        ),
        'conditions' => array(),
        'recursive' => 2,
        'contain' => array(
            'StatisticCategory' => array(
                'fields' => array(
                    'StatisticCategory.id',
                    'StatisticCategory.location_id',
                    'StatisticCategory.category'
                ),
                'StatisticItem' => array(
                    'fields' => array(
                        'StatisticItem.id',
                        'StatisticItem.statistic_category_id',
                        'StatisticItem.item'
                    ),
                    'Statistic' => array(
                        'fields' => array(
                            'Statistic.id',
                            'Statistic.statistic_item_id',
                            'Statistic.date',
                            'Statistic.number'
                        ),
                        'conditions' => array(
                            'Statistic.date' => $date
                        )
                    ),
                    'order' => array('StatisticItem.item')
                ),
                'order' => array('StatisticCategory.category')
            )
        ),
        'order' => array('Location.location')
    ));
4

1 に答える 1

0

包含可能のドキュメントでは、より深い関連付けを含める方法について説明しています。以下はあなたが探しているものについてであるはずです:

$this->Location->find('all', array(
    'contain' => array(
        'StatisticCategory' => array(
            'StatisticItem' => array(
                'Statistic'
            )
        )
    )
));
于 2012-12-22T02:52:58.107 に答える