Ejemplo n.º 1
0
 /**
  * 重设 auto_increment 的值,自动计算最大的值
  *
  * @string string $primaryKey 主键名称
  *
  */
 public function resetAutoIncValue(DataMapper $dataMapper, $primaryKey)
 {
     list($result) = $dataMapper->select('max(' . $primaryKey . ') as mvalue', null, null, 0);
     $autoIncValue = $result->getAdhocValue('mvalue') + 1;
     $this->setAutoIncValue($dataMapper, $autoIncValue);
 }
Ejemplo n.º 2
0
 /**
  * 取得分类下面对应的商品描述列表
  * 由于这是为分类列表用的,所以我们尽量取少的数据,不是整个商品详情都取
  * 少 select 一些字段有利于提高性能
  *
  * @return array 商品列表,格式 array(array(商品详情), array(商品详情) ...)
  *
  * @param int $categoryId 分类的ID
  * @param int $level 取得多少层,子分类有可能很深,我们只取有限层次
  * @param int $offset 从什么地方开始取商品
  * @param string $systemTag 系统标记
  * @param int $limit 限制一次取得多少个商品
  * @param int $ttl 缓存时间
  */
 public function fetchGoodsArray($categoryId, $level, $systemTag, $offset = 0, $limit = 10, $ttl = 0)
 {
     // 参数验证
     $validator = new Validator(array('categoryId' => $categoryId, 'level' => $level, 'systemTag' => $systemTag, 'offset' => $offset, 'limit' => $limit, 'ttl' => $ttl));
     $categoryId = $validator->digits()->min(0)->validate('categoryId');
     $level = $validator->required()->digits()->min(1)->validate('level');
     $systemTag = $validator->validate('systemTag');
     $offset = $validator->digits()->min(0)->validate('offset');
     $limit = $validator->digits()->min(1)->validate('limit');
     $ttl = $validator->digits()->min(0)->validate('ttl');
     $this->validate($validator);
     $childrenIdArray = $this->fetchCategoryChildrenIdArray($categoryId, $level, $ttl);
     $childrenIdArray[] = $categoryId;
     // 加入父节点
     $queryCondArray = array();
     $queryCondArray[] = array('is_delete = 0 AND is_on_sale = 1 AND is_alone_sale = 1');
     // 构建 SQL 的 in 语句, cat_id in (100,20,30)
     $queryCondArray[] = array(QueryBuilder::buildInCondition('cat_id', $childrenIdArray, \PDO::PARAM_INT));
     if (!empty($systemTag)) {
         $queryCondArray[] = array('system_tag_list like ? ', '%' . Utils::makeTagString(array($systemTag)) . '%');
     }
     $dataMapper = new DataMapper('goods');
     return $dataMapper->select(' goods_id, cat_id, goods_sn, goods_name, brand_id, goods_number, market_price, shop_price, promote_price, ' . ' promote_start_date, promote_end_date, ' . ' is_real, is_shipping, sort_order, goods_type, suppliers_id ', QueryBuilder::buildAndFilter($queryCondArray), array('order' => 'sort_order desc, goods_id desc', 'offset' => $offset, 'limit' => $limit), $ttl);
 }