/**
  * 指定Criteria 查询数据; SQL语句查询数组,返回为数据数组,不提供实体绑定;
  * @param $criteria 
  * @return 绑定实体后的数组对象;
  */
 public function findAll($criteria)
 {
     //是否使用分页器
     $dataPager = $criteria->getDataPager();
     if (is_object($dataPager)) {
         $totalNum = 0;
         $fileds = $criteria->getFileds();
         $orderEntries = $criteria->getOrderEntries();
         $criteria->cleanOrder();
         $criteria->cleanFileds();
         $entityConf = $criteria->getTableEntity()->getConfig();
         $criteria->setFileds(explode(",", $entityConf['id']));
         $criteria->addProjection(Projections::rowCount());
         $rs1 = $criteria->_array(false);
         $totalNum = @current(@current($rs1));
         $dataPager->setTotalNum($totalNum);
         $criteria->cleanProjection();
         $criteria->setFileds($fileds);
         $criteria->setOrders($orderEntries);
         $criteria->setFirstResult($dataPager->getFirstResult());
         $criteria->setFetchSize($dataPager->getPageSize());
     }
     return $criteria->_array();
 }
 /**
  * 设定分页器;
  * @param DataPager $dataPager 分页器
  * @param String $relationEntiyName //指定关联对象名称;
  */
 public function setDataPager($dataPager, $relationEntiyName = null)
 {
     if ($relationEntiyName) {
         $cfg = $this->getConfig();
         foreach ($cfg['relations'] as $k => $relation) {
             if ($relation['name'] == $relationEntiyName) {
                 $crit = null;
                 if (isset($cfg['relations'][$k]['criteria'])) {
                     $crit = $cfg['relations'][$k]['criteria'];
                 } else {
                     if ('my\\bq\\criterion\\MongoCriteriaImpl' == get_class($this->criteria)) {
                         $crit = new MongoCriteriaImpl(new $relation['class']());
                     } else {
                         $crit = new CriteriaImpl(new $relation['class']());
                     }
                 }
                 $crit->setDataPager($dataPager);
                 //设定分页器
                 $crit->addProjection(Projections::rowCount('total'));
                 $cfg['relations'][$k]['criteria'] = $crit;
                 break;
             }
         }
         $this->setConfig($cfg);
     } else {
         $this->dataPager = $dataPager;
     }
 }
 public function findAndModify($criteria, $modifier)
 {
     //是否使用分页器
     $dataPager = $criteria->getDataPager();
     if (is_object($dataPager)) {
         $totalNum = 0;
         $fileds = $criteria->getFileds();
         $criteria->cleanFileds();
         $criteria->addProjection(Projections::rowCount());
         $rs1 = $criteria->_array(false);
         $totalNum = @current(@current($rs1));
         $dataPager->setTotalNum($totalNum);
         $criteria->cleanProjection();
         $criteria->setFileds($fileds);
         $criteria->setFirstResult($dataPager->getFirstResult());
         $criteria->setFetchSize($dataPager->getPageSize());
     }
     if ($modifier != null) {
         $criteria->setModifier($modifier);
     }
     try {
         $rs = $criteria->_array(true);
     } catch (Exception $e) {
         throw $e;
     }
     return $rs;
 }