Я пытаюсь выбрать строки базы данных в CakePHP на основе значения MAX () поля из другой таблицы.Вот SQL, который я пытаюсь выполнить:
SELECT `questions`.* FROM `tests`,`questions` GROUP BY `questions`.`id` HAVING `questions`.`test_id` = MAX(`tests`.`id`);
(Или что-то эквивалентное. По сути, я пытаюсь просто извлечь все строки из таблицы вопросов, где test_id равен наибольшему значению идентификатора втаблица тестов.)
Самая близкая вещь, которую я смог сделать в CakePHP, используя find()
, это то, что выполняет два запроса:
$current_test = $this->find('first',array('fields'=>array('MAX(Test.id) as current_test')));
$questions = $this->find('all',array(
'conditions'=>array('Question.test_id'=>$current_test[0]['current_test'])
));
Это дает мне нужные мне результаты, ноэто кажется ненужным.Есть ли какой-нибудь способ в CakePHP поместить это в один запрос?