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]);
Другие вопросы по тегам