извлечение данных из нескольких таблиц в CakeStack Overflow

Я новичок в 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

Решение

Вы можете использовать Mysql-запрос, он будет работать так же, как запрос 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

Другие решения

обращаться эта ссылка

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

внесите изменения согласно вашей таблице и fields.hope это помогает.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector