Nikunj K.
Nikunj K.

Reputation: 9199

cakephp model with hasmany

I have question in cakephp model,

I want to add dynamic condition in var $hasMany keyword

I want to add condition like current user_id, i got user Id after my login.

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

Upvotes: 1

Views: 638

Answers (2)

Arash Mousavi
Arash Mousavi

Reputation: 2148

I think its better to put your association in the construct function of your Model. like this:

/**
 * @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,
            ),
        ),
    );
}

Upvotes: 0

Arun Jain
Arun Jain

Reputation: 5464

If you want to add dynamic condition in your model, then you might have to bind the model association-ship dynamically into your controller's code. Write the following code into your controller's method for which you want to impose some new condition on the existing/new associated models.

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

Take a look at this link: Creating and destroying associations on the fly. This will surely help you to achieve the same.

Upvotes: 2

Related Questions