/** * 设定分页器; * @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; } }
/** * 可以指定条件筛选范本来查询实体; * @param Object $entity 需要查询的实体对象 * @param $example 指定条件样本 * @param array<Order> $orders 指定排序规则; 可以为 Order对像的数组; * @param DataPager $dataPager 数据分页器 * @param array<Translater> $translaters 数据转义器 * @return array<Entity>; */ public function findByExample($entity, $example, $order = null, $dataPager = null, $translaters = null) { if (is_object($entity)) { $config = $entity->getConfig(); $columns = $config['columns']; $criteria = new CriteriaImpl($entity); $criteria->setFileds($entity->getFileds()); //瑕佹煡璇㈢殑瀛楁 $criteria->setExample($example); //set order if (is_object($order)) { $criteria->addOrder($order); } else { if (is_array($order)) { foreach ($order as $orderItem) { $criteria->addOrder($orderItem); } } } if (is_object($translaters)) { $criteria->addTranslater($translaters); } else { if (is_array($translaters)) { foreach ($translaters as $translater) { $criteria->addTranslater($translater); } } } if ($dataPager) { $criteria->setDataPager($dataPager); } return $this->findAll($criteria); } }