cakemanp模型与hasmany

时间:2012-09-05 06:42:07

标签: cakephp activerecord has-many cakephp-appmodel

我在cakephp模型中有疑问,

我想在var $ hasMany关键字中添加动态条件

我想添加像当前user_id这样的条件,我在登录后获得了用户ID。

var $hasMany = array(
    "AskComment"=>array('limit'=>3),
    'AskStatistic',
    'AskContactsLink',
    'AskStatistic',
    'AskObject',
    'AskLikes'
);

2 个答案:

答案 0 :(得分:2)

如果要在模型中添加动态条件,则可能必须将模型关联动态绑定到控制器的代码中。将以下代码写入您想要在现有/新关联模型上强加一些新条件的控制器方法中。

$this->PrimaryModel->bindModel(array('hasMany' => array(
    'AskComment' => array(
        'className' => 'AskComment',
             'foreignKey' => 'primary_id',
              'conditions' => array('AskComment.user_id' => $user_id)
         )
    )
));

请看一下这个链接:Creating and destroying associations on the fly。这肯定会帮助你实现同样的目标。

答案 1 :(得分:0)

我认为将您的关联放在模型构造函数中会更好。 像这样:

/**
 * @see Model::__construct
 */
public function __construct($id = false, $table = null, $ds = null) {
    public $hasMany = array(
        'AskComment' => array(
            'className' => 'AskComment',
            'foreignKey' => 'primary_id',
            'conditions' => array(
                'AskComment.user_id' => $user_id,
            ),
        ),
    );
}