symfony2中的经典查询
来源:互联网 发布:嵌入式linux启动 编辑:程序博客网 时间:2024/05/18 01:02
1.这是symfony2中的连表查询
$sql = 'SELECT g FROM AppBundle:Goods g, AppBundle:GoodsRelated gr Where g.id = gr.relatedGoodsId AND g.status = :status AND gr.goodsId = :goodsId ORDER BY g.onShelfTime DESC';$params['status'] = Goods::STATUS_ON_SHELF;$params['goodsId'] = $goodsId;$query = $this->entityManager->createQuery($sql);$resultList = $query->setParameters($params)->setMaxResults($maxNumber)->getResult();
执行sql语句
SELECT c0_.id AS id_0 FROM cs_goods c0_, cs_goods_related c1_ WHERE c0_.id = c1_.related_goods_id AND c0_.status = 1 AND c1_.goods_id = '00ec49a3-a652-11e5-97ab-ac162d8b0550' ORDER BY c0_.on_shelf_time DESC LIMIT 10;2.带分页的dql写法
public function getList($page, $pageSize, $targetUser, $startDate, $endDate){ if (empty($endDate)) { $endDate = $startDate; } $startTimestamp = strtotime($startDate); $endTimestamp = strtotime($endDate); if ($startTimestamp > $endTimestamp) { throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER); } $warehouseId = $targetUser->getWarehouseId(); $sql = 'SELECT i FROM AppBundle:InventoryOrder i WHERE'; $sql .= ' i.warehouseId = :warehouseId'; if ($startTimestamp) { $start = date('Y-m-d 00:00:00', $startTimestamp); $end = date('Y-m-d 23:59:59', $endTimestamp); $index = ' AND i.submitTime'; $sql .= $index; $sql .= ' BETWEEN :startDate AND :endDate '; $params['endDate'] = $end; $params['startDate'] = $start; } $params['warehouseId'] = $warehouseId; $sql .= ' ORDER By i.submitTime DESC, i.createTime DESC'; $query = $this->entityManager->createQuery($sql); $offset = $pageSize * ($page - 1); $orderList = $query->setParameters($params)->setFirstResult($offset)->setMaxResults($pageSize)->getResult(); $data = array(); if (!empty($orderList)) { foreach ($orderList as $order) { $operatorIds[] = $order->getOperatorId(); } foreach ($orderList as $order) { $data[] = InventoryOrderDTOBuilder::build($order); } } return $data;}3.这是where in的写法,也是使用queryBuilder的写法
$queryBuilder = $this->getEntityManager()->createQueryBuilder();$resultList = $queryBuilder->select('s') ->from('AppBundle:StockHistory', 's') ->Where('s.materialId = :materialId') ->andWhere($queryBuilder->expr()->in('s.action', $actionList)) ->orderBy('s.createTime', 'DESC') ->setParameter('materialId', $materialId) ->getQuery()->getResult();return $resultList;
4.这是常用的查询:对于时间,是可选的时候,处理方式
private function _validateTime($startDate, $endDate){ if (empty($startDate) && empty($endDate)) { return; } if (empty($startDate) && !empty($endDate) ) { throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER); } if (!empty($startDate) && empty($endDate)) { $endDate = $startDate; } $startTimestamp = strtotime($startDate)?strtotime($startDate):false; $endTimestamp = strtotime($endDate)?strtotime($endDate):false; if ($startTimestamp === false) { throw new \Exception("日期格式非法", BaseException::ERROR_CODE_ILLEGAL_PARAMETER); } else { $start = date('Y-m-d 00:00:00', $startTimestamp); } if($startTimestamp === false){ throw new \Exception("日期格式非法", BaseException::ERROR_CODE_ILLEGAL_PARAMETER); } else { $end = date('Y-m-d 23:59:59', $endTimestamp); } return array('start' => $start, 'end' => $end);}
这是一个经典的查询 queryBuilder的写法
private function _getOrderList($targetUser, $page, $pageSize, $startDate, $endDate, $status, $paymentId, $settlementId, $order, $orderBy){ // 验证支付方式 $this->_validatePayment($paymentId); // 验证结算类型 $this->_validateSettlement($settlementId); // 验证时间并获取时间 $timeRange = $this->_validateTime($startDate, $endDate); $query = $this->entityManager->getRepository('AppBundle:SalesOrder')->createQueryBuilder('p'); if (!empty($status) && in_array($status, array(SalesOrder::UNCHECK_ORDER, SalesOrder::NOT_SEND_ORDER, SalesOrder::SENT_ORDER, SalesOrder::STATUS_SUBMITTED))) { $query->where('p.status = :status') ->setParameter('status', "$status"); } if (!empty($status) && !in_array($status, array(SalesOrder::UNCHECK_ORDER, SalesOrder::NOT_SEND_ORDER, SalesOrder::SENT_ORDER, SalesOrder::STATUS_SUBMITTED))) { throw new \Exception("参数不正确", BaseException::ERROR_CODE_ILLEGAL_PARAMETER); } $orderBy = $this->_confirmOrderBy($status, $orderBy); $warehouseId = $targetUser->getWarehouseId(); $query->andWhere('p.warehouseId = :warehouseId') ->setParameter('warehouseId', "$warehouseId") ->orderBy($orderBy, $order) ->setFirstResult($pageSize * ($page-1)) ->setMaxResults($pageSize); //相当于limit 取多少条数据 setLimit(100);*/ if (!empty($timeRange)) { $start = $timeRange['start']; $end = $timeRange['end']; $query->andWhere("{$orderBy} >= :start") ->setParameter('start', "$start") ->andWhere("{$orderBy} <= :end") ->setParameter('end', "$end"); } if (!empty($paymentId)) { $query->andWhere('p.paymentId = :paymentId') ->setParameter('paymentId', "$paymentId"); } if (!empty($settlementId)) { $query->andWhere('p.settlementId = :settlementId') ->setParameter('settlementId', "$settlementId"); } $resultList = $query->getQuery()->getResult(); return $resultList;}
1 0
- symfony2中的经典查询
- symfony2 联合查询
- Symfony2
- Symfony2
- Symfony2 Doctrine 数据库查询方法总结
- Symfony2 createQuery中参数模糊查询
- symfony2项目中的单测实例
- symfony2中的EventDispatcher的项目使用
- 面试题中的sql语句经典查询
- symfony2中对于输入时间进行查询,时间的处理。
- 详解基于MongoDB的地理位置查询,结合Symfony2演示
- 经典查询
- 经典查询
- Symfony2 表单
- ubuntu symfony2
- Symfony2表单
- Symfony2 TreeBuilder
- symfony2 控制器
- 微信开放平台开发(3) 移动应用微信登录
- Android的.so文件、ABI和CPU的关系
- Unity开发-你必须知道的优化建议
- (转载)动态规划:从新手到专家(关于动态规划算法最精彩的中文描述,没有之一)
- LightOj 1336(Sigma Function)
- symfony2中的经典查询
- ZooKeeper 安装、配置
- python 遍历文件夹 文件
- 字符串转AscII
- FMDB的使用
- 一些常用软件对应的开源软件
- Swift2-0基础_String(字符串)
- 梯度、梯度下降,随机梯度下降
- Serializable 和 Parcelable 两种序列化