Cakephp: модель отношений и функций - PullRequest
0 голосов
/ 26 декабря 2010

У меня есть следующие модели:

Car hasMany Passengers
Passengers belongTo Car
Passengers hasMany Packages
Package belongTo Passenger

и мне неудобно всегда суммировать все посылки по всем пассажирам, когда я хочу знать, сколько посылок в машине.

Есть ли способ расширить модель автомобиля с помощью функции countPackages (), которая всегда возвращает количество пакетов для конкретного автомобиля без необходимости изменения базы данных?

Также: возможно ли ограничить отношение hasMany, скажем, 4 соединениями (-> что в каждом автомобиле может быть только 4 пассажира)?

1 Ответ

0 голосов
/ 28 декабря 2010

Вы пытались установить рекурсивное значение 2 при поиске вызова?Вы можете создать функцию в модели автомобиля, например, так:

public function countPackages($carId = null) {
    $data = $this->find('first', array('recursive' => 2, 'conditions' => array('Car.id' => $carId));
    return count($data['Package']);
}

Для этого нужно будет вернуть все данные для конкретного автомобиля (включая информацию о пакете, установив рекурсивное значение 2).Оттуда вы можете просто вернуть количество пакетов, связанных с транспортным средством, используя функцию count ().

Вы можете указать количество связанных результатов, которые будут возвращены в массиве hasMany, например:

public $hasMany = array(
    'Passenger' => array(
        'limit' => 5
    )
);

В этом примере вернется только 5 пассажиров.

Arron Bailiss.Консультант по веб и программному обеспечению www.arronbailiss.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...