在CakePHP中有没有一种方法可以定义模型与条件的关系?

在CakePHP中有没有一种方法可以定义模型与条件的关系?,cakephp,Cakephp,我使用的是CakePHP1.3 关于CakePHP模型,我有几个问题: 1) 有没有一种方法可以定义一个带有条件的模型,这样当使用Containable行为调用时,我就不需要再次为它定义“条件”。例如:我有两个模型——“商店”和“交易”,其中“商店”有很多“交易”。我希望在每次都不必为“交易”定义这些条件的情况下完成以下工作: $this->Store('all', array('contain'=>array('Deal'=>array('isactive'=>1,'n

我使用的是CakePHP1.3

关于CakePHP模型,我有几个问题:

1) 有没有一种方法可以定义一个带有条件的模型,这样当使用Containable行为调用时,我就不需要再次为它定义“条件”。例如:我有两个模型——“商店”和“交易”,其中“商店”有很多“交易”。我希望在每次都不必为“交易”定义这些条件的情况下完成以下工作:

$this->Store('all', array('contain'=>array('Deal'=>array('isactive'=>1,'now() < expirydate', 'qty > 0')));
$this->Store('all',array('contain'=>array('Deal'=>array('isactive'=>1,'now()0'));
2) 另外,是否有一种方法可以根据条件不同地定义模型之间的关系?换句话说,我如何定义“商店”有许多“交易”、“活动交易”、“过期交易”等,都在“交易”表中,但根据我为每个交易设置的条件而有所不同

非常感谢您的帮助


感谢/问候..

如果您查看CakePHP Cookbook页面上的前两个代码示例,您会发现您可以向模型联接添加条件,无论何时进行基本查找,这些条件都会起作用

因此,您应该能够执行以下操作:

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' => ''
        )
    );
}
类存储扩展了AppModel{
var$name='Store';
var$hasMany=array(
'Deal'=>数组(
'className'=>'Deal',
'foreignKey'=>'store_id',
“条件”=>数组(
'Deal.isactive'=>'1',
'now()0'
),
“订单”=>“
),
“ExpiredDeal”=>数组(
'className'=>'Deal',
'foreignKey'=>'store_id',
'条件'=>数组('now()>=ExpiredDeal.ExpireyDate'),
“订单”=>“
)
);
}

如果您查看CakePHP Cookbook页面上的前两个代码示例,您会发现您可以向模型联接添加条件,无论何时进行基本查找,这些条件都会起作用

因此,您应该能够执行以下操作:

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' => ''
        )
    );
}
类存储扩展了AppModel{
var$name='Store';
var$hasMany=array(
'Deal'=>数组(
'className'=>'Deal',
'foreignKey'=>'store_id',
“条件”=>数组(
'Deal.isactive'=>'1',
'now()0'
),
“订单”=>“
),
“ExpiredDeal”=>数组(
'className'=>'Deal',
'foreignKey'=>'store_id',
'条件'=>数组('now()>=ExpiredDeal.ExpireyDate'),
“订单”=>“
)
);
}

另外,请记住,在设置类属性时,不能使用php计算的任何内容(即在条件数组中使用$variable)——但是,如果关联确实存在动态或变量,则可以使用构造函数来设置关系。此外,请记住,在设置类属性时,不能使用php计算的任何内容(即在条件数组中使用$variable)——但是,如果关联中确实存在动态或变量,则可以使用构造函数来设置关系。