2010-12-26 14 views
0

I持って、次のモデル:CakePHPの:モデルの関係と機能

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

と私はそれが面倒いつも私がであるどのように多くのパッケージを知りたいときに、すべての乗客の上にすべてのパッケージを合計する必要が見つけます車。

データベースを変更することなく、特定の車のパッケージ数を常に返す関数countPackages()を使用してCarモデルを拡張する方法はありますか?

また、hasMany関係を4つの接続(つまり、各車には4人の乗客しか持たない)と言うように制限することはできますか?

答えて

0

検索呼び出しで再帰を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