public function getAsistenciasPorFechas($fecha_inicio, $fecha_fin) { $aAsistencia = array(); // En teoria esta dos consultas pueden reemplazarse con una solo usando LEFT JOIN y CASE $c = new Criteria(); $c->addSelectColumn(TipoasistenciaPeer::DESCRIPCION); $c->add(TipoasistenciaPeer::GRUPO, 'Inasistencias', Criteria::EQUAL); $rsColumna = TipoasistenciaPeer::doSelectStmt($c); $c = new Criteria(); $c->clearSelectColumns(); $c->addGroupByColumn(TipoasistenciaPeer::DESCRIPCION); // $c->addSelectColumn(TipoasistenciaPeer::GRUPO); $c->addSelectColumn(TipoasistenciaPeer::DESCRIPCION); $c->addSelectColumn('SUM(' . TipoasistenciaPeer::VALOR . ') AS valor'); $c->addJoin(TipoasistenciaPeer::ID, AsistenciaPeer::FK_TIPOASISTENCIA_ID); $c->add(AsistenciaPeer::FK_ALUMNO_ID, $this->getId(), Criteria::EQUAL); $c2 = new Criteria(); $criterion = $c2->getNewCriterion(AsistenciaPeer::FECHA, $fecha_inicio, Criteria::GREATER_EQUAL); $criterion->addAnd($c2->getNewCriterion(AsistenciaPeer::FECHA, $fecha_fin, Criteria::LESS_EQUAL)); $c->add($criterion); $c->add(TipoasistenciaPeer::GRUPO, 'Inasistencias', Criteria::EQUAL); $rsValor = TipoasistenciaPeer::doSelectStmt($c); if ($rsColumna) { while ($res_c = $rsColumna->fetch()) { $aAsistencia[$res_c[0]] = 0; // indice: nombre del Grupo, contenido: } } if ($rsValor) { while ($res = $rsValor->fetch()) { // indice: nombre del Grupo, contenido: sumatoria de valor $aAsistencia[$res[0]] = $res[1]; } } return $aAsistencia; }
public function reload($deep = false, PropelPDO $con = null) { if ($this->isDeleted()) { throw new PropelException("Cannot reload a deleted object."); } if ($this->isNew()) { throw new PropelException("Cannot reload an unsaved object."); } if ($con === null) { $con = Propel::getConnection(TipoasistenciaPeer::DATABASE_NAME, Propel::CONNECTION_READ); } $stmt = TipoasistenciaPeer::doSelectStmt($this->buildPkeyCriteria(), $con); $row = $stmt->fetch(PDO::FETCH_NUM); $stmt->closeCursor(); if (!$row) { throw new PropelException('Cannot find matching row in the database to reload object values.'); } $this->hydrate($row, 0, true); if ($deep) { $this->collAsistencias = null; $this->lastAsistenciaCriteria = null; } }
public static function doSelect(Criteria $criteria, PropelPDO $con = null) { return TipoasistenciaPeer::populateObjects(TipoasistenciaPeer::doSelectStmt($criteria, $con)); }