0

私は3つのモデルを持っています。hasMany Collectorと入力し、CollectorhasAndBelongsToManyPlaceと入力します。

コレクターが少なくとも1つの場所を持っているすべてのタイプを取得する必要があります。だから私はコレクターが場所を持っていないタイプは必要ありません。

Collectorモデルにcountフィールドがないため、counterCacheを使用できません。

4

1 に答える 1

0

私はここで間違っているかもしれませんが、これを行う最良の方法はModel :: afterFind()メソッドを利用することだと思います。

<?php
// type.php (Model)
function afterFind($results, $primary) {
    if ($primary === true) {
        foreach ($results as $key => $type) {
            foreach ($type['Collector'] as $collector) {
                // Assuming you built the associations/tables/etc. correctly and are following cake conventions.
                if (empty($collector['Place']))  {
                    unset($results[$key]);
                    continue 2;
                }
            }
        }
    }
}
?>

<?php
// types_controller.php

// Assuming you're using the containable behavior? If not
// set recursive to 2.
$this->Type->contain(array(
    'Collector' => array(
        'Place'
    )
));
$types = $this->Type->find('all');

?>
于 2013-03-26T22:44:02.280 に答える