Reputation: 11782
I have two tables ,
moods and votes,
votes contains votes for each mood added using parameter vote.moodId
I am trying to get specific types of moods added on which i have voted. I am using cake php
$conditions = array(
'Mood.userId'=>$userId,
'Mood.moodType'=>MOOD_IT
);
$moods = $this->Mood->find('all', array('conditions'=>$conditions,
'fields' => $this->mood_fields_it,
'order' => array('Mood.created DESC'),
'limit' => 20,
'offset' => $offset * 20
));
For now this is getting all moods added in database using my userId, instead how can i get the moods on which i have voted not that have userId = myUserid?
Upvotes: 0
Views: 567
Reputation: 123
Your Mood.php model should have
public $hasMany = array(
'Vote' => array(
'className' => 'Vote',
'foreignKey' => 'mood_id'
)
);
In your votes table make sure you add a column mood_id (integer). This binds the Votes to the Moods. To filter based on related models you can use Containable. Add the following to your AppModel.php:
public $actsAs = array('Containable');
Then your find should look like this:
$conditions = array(
'Mood.userId !='=>$userId, // all Moods that not yours
'Mood.moodType'=>MOOD_IT
);
$moods = $this->Mood->find('all',
array(
'conditions'=>$conditions,
'contain' => array('Vote' => array(
'conditions' => array('Vote.userId' => $userId) // find your votes
)
),
'fields' => $this->mood_fields_it,
'order' => array('Mood.created DESC'),
'limit' => 20,
'offset' => $offset * 20
));
Upvotes: 1