Cake PHP - как проверить состояние только за последние
Я следую инструкциям из учебника Закладки, и у меня возникла проблема с одним из запросов.
Я испек все модели из своей базы данных (как в учебнике), и теперь я хочу подготовить собственный искатель.
У меня есть две таблицы академических учителей и оценки
CREATE TABLE evaluations (
ID int(10) NOT NULL AUTO_INCREMENT,
academic_teacher_ID int(10) NOT NULL,
framework_ID int(10) NOT NULL,
protocol_ID int(10) NOT NULL,
final_note DOUBLE,
room varchar(255),
PRIMARY KEY (ID)) ;
CREATE TABLE academic_teachers (
ID int(10) NOT NULL AUTO_INCREMENT,
name varchar(255) NOT NULL,
surname varchar(255) NOT NULL,
national_identification_number int(10) NOT NULL,
occupation varchar(4),
degree varchar(255),
department varchar(255),
PRIMARY KEY (ID)) ;
Я хочу найти учителей, которые на своей последней оценке получили низкую оценку.
public function findLowNotes(Query $query, array $options)
{
return $this->find()
->distinct(['AcademicTeachers.id'])
->matching('Evaluations', function ($q) {
return $q->where(['Evaluations.final_note' < 3]);
});
Но он найдет всех учителей, у которых когда-либо была плохая записка. Как это должно быть? Должен ли я где-нибудь использовать один из способов получения последнего идентификатора, который я нашел? Или есть более умный способ, который наверняка сработает? Я очень запутался, как совместить все это вместе.
И - возможно ли присоединиться здесь с этим final_note, чтобы я мог разбить его на страницы вместе с данными этого учителя?
С уважением, Милвен
1 ответ
Это неправильно.
return $q->where(['Evaluations.final_note' < 3]);
Так должно быть.
return $q->where(['Evaluations.final_note <' => 3]);