Cakephp:模型关系和函数

时间:2010-12-26 19:31:51

标签: cakephp

我有以下型号:

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

当我想知道汽车中有多少包裹时,我总觉得总是要总结所有乘客的包裹是很麻烦的。

有没有办法使用函数countPackages()扩展Car模型,该函数总是返回特定汽车的包数而无需更改数据库?

另外:是否可以将hasMany关系限制为4个连接( - >每辆车只能有4个乘客)?

1 个答案:

答案 0 :(得分:0)

您是否尝试在查找调用中将递归设置为2?您可以在Car模型中创建一个函数,如下所示:

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 Web&软件顾问
www.arronbailiss.com