public function getAvailableStudentsForExaminationSubject(ExaminationSubject $examination_subject) { $c = new Criteria(); $c->add(CourseSubjectPeer::CAREER_SUBJECT_SCHOOL_YEAR_ID, $examination_subject->getCareerSubjectSchoolYearId()); $c->addJoin(CourseSubjectPeer::ID, CourseSubjectStudentPeer::COURSE_SUBJECT_ID, Criteria::INNER_JOIN); $c->addJoin(CourseSubjectStudentPeer::ID, StudentDisapprovedCourseSubjectPeer::COURSE_SUBJECT_STUDENT_ID, Criteria::INNER_JOIN); $c->add(CourseSubjectStudentPeer::STUDENT_APPROVED_COURSE_SUBJECT_ID, null, Criteria::ISNULL); $c->addJoin(CourseSubjectStudentPeer::STUDENT_ID, StudentPeer::ID, Criteria::INNER_JOIN); $c->addJoin(CourseSubjectStudentPeer::ID, CourseSubjectStudentExaminationPeer::COURSE_SUBJECT_STUDENT_ID, Criteria::INNER_JOIN); $c->add(CourseSubjectStudentExaminationPeer::EXAMINATION_NUMBER, $examination_subject->getExamination()->getExaminationNumber()); $c->add(CourseSubjectStudentExaminationPeer::IS_ABSENT, false); $c->addAnd(CourseSubjectStudentExaminationPeer::MARK, null, Criteria::ISNULL); //Quito los que ya la aprobaron $approved_criteria = new Criteria(); $approved_criteria->addJoin(StudentApprovedCareerSubjectPeer::STUDENT_ID, StudentPeer::ID, Criteria::INNER_JOIN); $approved_criteria->add(StudentApprovedCareerSubjectPeer::CAREER_SUBJECT_ID, $examination_subject->getCareerSubjectSchoolYear()->getCareerSubjectId()); $approved_criteria->clearSelectColumns(); $approved_criteria->addSelectColumn(StudentApprovedCareerSubjectPeer::STUDENT_ID); $stmt = StudentApprovedCareerSubjectPeer::doSelectStmt($approved_criteria); $not_in = $stmt->fetchAll(PDO::FETCH_COLUMN); $c->add(StudentPeer::ID, $not_in, Criteria::NOT_IN); return StudentPeer::doSelect($c); }