我正在使用CakePHP 1.3。
我对CakePHP模型有几个问题:
1)有没有办法用条件定义模型,这样当使用Containable行为调用时,我不需要再为它定义'条件'。例如:我有两个模型 - “商店”和“交易”,其中“商店”有很多“交易”。我想完成以下操作,而不必每次都为“交易”定义这些条件:
$this->Store('all', array('contain'=>array('Deal'=>array('isactive'=>1,'now() < expirydate', 'qty > 0')));
2)另外,有没有办法根据条件不同地定义模型之间的关系?换句话说,我如何定义“商店”hasMany“Deals”,“ActiveDeal”,“ExpiredDeal”等等,都在'deals'表中,但根据我为每个条款设置的条件而不同。
非常感谢任何帮助。
感谢/问候..
答案 0 :(得分:3)
如果您查看CakePHP Cookbook的Associations: Linking Models Together页面上的前几个代码示例,您将看到可以为模型联接添加条件,无论何时执行基本查找都可以使用。< / p>
因此,您应该能够执行以下操作:
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' => ''
)
);
}