我有以下型号:
Car hasMany Passengers
Passengers belongTo Car
Passengers hasMany Packages
Package belongTo Passenger
当我想知道汽车中有多少包裹时,我总觉得总是要总结所有乘客的包裹是很麻烦的。
有没有办法使用函数countPackages()扩展Car模型,该函数总是返回特定汽车的包数而无需更改数据库?
另外:是否可以将hasMany关系限制为4个连接( - >每辆车只能有4个乘客)?
答案 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