/** * @author DuongNQ * @param \Expert\Model\Expert\Subject $exp * todo lay tat ca mon hoc ma mentor care */ public function fetchAllSubject($exp) { $select = $this->getDbSql()->select(['es' => self::TABLE_NAME]); $select->join(['s' => \Subject\Model\SubjectMapper::TABLE_NAME], 's.id=es.subjectId', 'name'); if ($exp->getExpertId()) { $select->where(['es.expertId' => $exp->getExpertId()]); } if ($exp->getOption('expertIds')) { $select->where(['es.expertId' => $exp->getOption('expertIds')]); } $query = $this->getDbSql()->buildSqlString($select); $rows = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE); $rows = $rows->toArray(); $result = []; if (count($rows)) { foreach ($rows as $r) { $result[$r['expertId']][$r['subjectId']] = $r['name']; } } // vdump($result);die; return $result; }
/** * @author DuongNQ * @param \Expert\Model\Expert\Subject $exp */ public function featchAll($exp) { $select = $this->getDbSql()->select(array('es' => self::TABLE_NAME)); $select->columns(['subjectId']); $select->join(['e' => ExpertMapper::TABLE_NAME], 'e.id=es.expertId', array('id')); $select->join(['s' => \Subject\Model\SubjectMapper::TABLE_NAME], 's.id=es.subjectId', ['subjectName' => 'name']); $select->order(['e.id' => 'DESC']); if ($exp->getOption('subjectIds')) { $select->where(['subjectId' => $exp->getOption('subjectIds')]); } else { $select->where(['subjectId' => $exp->getSubjectId()]); } $query = $this->getDbSql()->buildSqlString($select); $results = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE); $subjects = []; if (count($results)) { $results = $results->toArray(); foreach ($results as $r) { $subjects[$r['id']][] = $r['subjectName']; $expertIds[] = $r['id']; } } unset($select); $select = $this->getDbSql()->select(array('e' => ExpertMapper::TABLE_NAME)); $select->columns(['id', 'description', 'rating', 'rate', 'extraContent']); $select->where(['e.id' => $expertIds]); $select->join(['u' => UserMapper::TABLE_NAME], 'e.userId = u.id', ['username', 'fullName']); $query = $this->getDbSql()->buildSqlString($select); $results = $this->getDbAdapter()->query($query, Adapter::QUERY_MODE_EXECUTE); if (count($results)) { $results = $results->toArray(); foreach ($results as $r) { if (isset($subjects[$r['id']])) { $r['subject'] = $subjects[$r['id']]; } $mentors[] = $r; } } return $mentors; }