2017-08-11 13 views
0

私はcakephpで新しく、cakephpでクエリを実装しようとしています。 私はこのクエリを持っていますCakephpの複数のテーブルからデータを取得する

SELECT * FROM question join question_topic on question.question_id=question_topic.question_id join topic on topic.topic_id=question_topic.topic_id join user_topic on user_topic.topic_id=topic.topic_id where user_topic .user_id=10 

これはcakephpで必要です。私が試してみました何

この

$this->Behaviors->attach('Containable'); 
     return $this->find('all', array(

      'contain' => array(
       'User', 
       'UserInfo.UserTopic'=>array(
         'conditions'=>array('UserTopic.user_id'=>10) 
       ), 
       'QuestionAndTopic.Topic','UpVoteQuestion','Answer','Answer.UserInfo' 

      ), 


      'order' => 'rand()', 
      'recursive' => 0 
     )); 

である。しかし、クエリは私に右の結果を与えていません。見てみてください。

Question.php

class Question extends AppModel 
{ 
    public $useTable = 'question'; 
    public $primaryKey = 'question_id'; 


    public $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id', 
      'fields' => array('User.user_id','User.email','User.active') 

     ), 
     'UserInfo' => array(
      'className' => 'UserInfo', 
      'foreignKey' => 'user_id', 


     ) 
    ); 
    public $hasMany = array(
     'Answer' => array(
      'className' => 'Answer', 
      'foreignKey' => 'question_id', 


     ), 

     'QuestionAndTopic' => array(
      'className' => 'QuestionAndTopic', 
      'foreignKey' => 'question_id', 
    ) 
); 

    public function latestQuestions(){ 
     $this->Behaviors->attach('Containable'); 
     return $this->find('all', array(

      'contain' => array(
       'User', 
       'UserInfo.UserTopic'=>array(
         'conditions'=>array('UserTopic.user_id'=>10) 
       ), 
       'QuestionAndTopic.Topic','UpVoteQuestion','Answer','Answer.UserInfo' 

      ), 


      'order' => 'rand()', 
      'recursive' => 0 
     )); 
    } 
} 

答えて

0

あなたはそれはのように、CakePHPのクエリとして

$this->Behaviors->query('SELECT * FROM question join question_topic on question.question_id=question_topic.question_id join topic on topic.topic_id=question_topic.topic_id join user_topic on user_topic.topic_id=topic.topic_id where user_topic .user_id=10'); 
0

のような作品があなたにつきなどの変更を行うthis link

$options['joins'] = array(
    array('table' => 'books_tags', 
     'alias' => 'BooksTag', 
     'type' => 'inner', 
     'conditions' => array(
      'Book.id = BooksTag.book_id' 
     ) 
    ), 
    array('table' => 'tags', 
     'alias' => 'Tag', 
     'type' => 'inner', 
     'conditions' => array(
      'BooksTag.tag_id = Tag.id' 
     ) 
    ) 
); 
$options['conditions'] = array(
    'Tag.tag' => 'Novel' 
); 
$books = $Book->find('all', $options); 

を参照してくださいます問い合わせるMySQLを使用することができますテーブルとfields.hopeこれは役立ちます。

関連する問題