douqi3195 2015-11-15 17:07
浏览 26
已采纳

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

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?

  • 写回答

1条回答 默认 最新

  • dongmi4035 2015-11-15 19:22
    关注

    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
                                ));
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?
  • ¥15 加热介质是液体,换热器壳侧导热系数和总的导热系数怎么算