/** * This method joins the preceptor indicated with the corresponing students. * * @return $criteria */ public static function joinWithStudents(Criteria $c, $user_id, $return_ids = false) { $c1 = new Criteria(); $c1->add(PersonPeer::USER_ID, $user_id); $c1->addJoin(PersonalPeer::PERSON_ID, PersonPeer::ID); $c1->addJoin(PersonalPeer::ID, DivisionPreceptorPeer::PRECEPTOR_ID); $c1->addJoin(DivisionPreceptorPeer::DIVISION_ID, DivisionStudentPeer::DIVISION_ID); $c1->clearSelectColumns(); $c1->addSelectColumn(DivisionStudentPeer::STUDENT_ID); $c1->setDistinct(); $stmt = DivisionStudentPeer::doSelectStmt($c1); $division_in = $stmt->fetchAll(PDO::FETCH_COLUMN); $c2 = new Criteria(); self::joinWithCourse($c2, $user_id); $c2->addJoin(CourseSubjectPeer::COURSE_ID, CoursePeer::ID); $c2->addJoin(CourseSubjectPeer::ID, CourseSubjectStudentPeer::COURSE_SUBJECT_ID); $c2->clearSelectColumns(); $c2->addSelectColumn(CourseSubjectStudentPeer::STUDENT_ID); $c2->setDistinct(); $stmt = DivisionStudentPeer::doSelectStmt($c2); $course_in = $stmt->fetchAll(PDO::FETCH_COLUMN); $in = array_merge($course_in, $division_in); if ($return_ids) { return $in; } $c->add(StudentPeer::ID, $in, Criteria::IN); $c->setDistinct(); }