根据cakephp中的另一个表获取一个表的条目

时间:2015-11-15 17:07:05

标签: php mysql cakephp

我有两张桌子,

心情和投票,

投票包含使用参数vote.moodId

添加的每种情绪的投票

我正在努力获得已投票的特定类型的情绪。我正在使用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
            ));

现在,这是使用我的userId在数据库中添加所有情绪,而不是如何获得我投票的情绪,而不是有userId = myUserid?

1 个答案:

答案 0 :(得分:1)

您的Mood.php模型应该

public $hasMany = array(
    'Vote' => array(
        'className' => 'Vote',
        'foreignKey' => 'mood_id'
    )
);

在您的投票表中,请确保添加列 mood_id (整数)。 这将投票与情绪联系在一起。 要根据相关模型进行过滤,您可以使用Containable。将以下内容添加到AppModel.php:

public $actsAs = array('Containable');

然后你的发现应该是这样的:

$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
                            ));