2011-01-05 5 views
0

私はCakePHP 1.3を使用しています。 CakePHPの条件とモデルの関係を定義する方法はありますか?

は、私は、CakePHPのモデルに関するいくつかの質問があります。

1)条件付きモデルを定義する方法はありますが収容可能、動作を使用して呼び出されたときに、私は「条件」を定義する必要がないようにもう一度。たとえば、「Store」と「Deal」の2つのモデルがあります。「Store」には「Deal」があります。私は「ディール」するたびにこれらの条件を定義することなく次のことを達成したい:

$this->Store('all', array('contain'=>array('Deal'=>array('isactive'=>1,'now() < expirydate', 'qty > 0'))); 

2)また、異なった条件に基づいて、モデル間の関係を定義する方法はありますか?言い換えれば、どのようにして「店」hasMany「取引」、「ActiveDeal」、「ExpiredDeal」などを「取引」テーブル上に定義することができますか?それぞれについて設定した条件に基づいて異なります。

多くのご協力をいただきありがとうございます。

感謝/よろしく..

答えて

3

あなたはCakePHPのクックブックのAssociations: Linking Models Togetherページ上のコード例の最初のカップルを見ると、あなたがあなたのモデルに条件を追加することができていることがわかりますがそれはいつでもあなたを動作します合流します基本的な検索を行います。

そのため次のような何かを行うことができるはず:

class Store extends AppModel { 
    var $name = 'Store'; 

    var $hasMany = array(
     'Deal' => array(
      'className' => 'Deal', 
      'foreignKey' => 'store_id', 
      'conditions' => array(
       'Deal.isactive' => '1', 
       'now() < Deal.expirydate', 
       'Deal.qty > 0' 
      ), 
      'order' => '' 
     ), 
     'ExpiredDeal' => array(
      'className' => 'Deal', 
      'foreignKey' => 'store_id', 
      'conditions' => array('now() >= ExpiredDeal.expirydate'), 
      'order' => '' 
     ) 
    ); 
} 
+1

また、クラスのプロパティを設定するときに、あなたの条件配列に$変数を使用してPHP(IEで評価し、何も使用できないことに注意してください) - 実際には、関連について動的なものや変数がある場合は、コンストラクターを使用して関係を設定することができます。 –

関連する問題