Symfony查询方法实例小结

 更新时间:2017年06月28日 09:09:39   作者:随风飘扬5566  
这篇文章主要介绍了Symfony查询方法,结合实例形式总结分析了createQuery与getQuery查询数据的具体使用技巧,需要的朋友可以参考下

本文实例讲述了Symfony查询方法。分享给大家供大家参考,具体如下:

1. createQuery的写法

$sql = 'SELECT COUNT(DISTINCT(g.goodsId)) FROM AppBundle:GoodsIndex g WHERE g.status = :status';
$params = array(
 'status' => GoodsIndex::STATUS_NORMAL,
);
if (!empty($keywords)) {
 $params['keywords'] = "%{$keywords}%";
 $sql .= ' AND g.keywords like :keywords ';
}
 if (!empty($warehouseIdList)) {
  $params['warehouseIdList'] = $warehouseIdList;
  $sql .= " AND g.warehouseId IN :(warehouseIdList)";
 }
$goodsNum = $this->entityManager->createQuery($sql)->setParameters($params)->getSingleScalarResult();

个人总结::是指占位符的意思,防止sql注入。所以把所有需要的参数做成数组$params里面。

2. getQuery的写法

$orderBy = 'p.'.$searchOptions['orderBy'];
$repository = $this->entityManager
 ->getRepository('AppBundle:GoodsIndex');
$query = $repository->createQueryBuilder('p');
$query->select('DISTINCT(p.goodsId)');
$query->where('p.keywords like :keywords')
 ->setParameter('keywords', "%{$searchOptions['keywords']}%")
 ->andwhere('p.status = :status')
 ->setParameter('status', GoodsIndex::STATUS_NORMAL)
 ->orderBy($orderBy, $searchOptions['order'])
 ->setFirstResult($pagination['pageSize'] * ($pagination['page'] - 1))
 ->setMaxResults($pagination['pageSize']);
if (!empty($searchOptions['warehouseIdList'])) {
 $query->andWhere($query->expr()->in('p.warehouseId', $searchOptions['warehouseIdList']));
}
$goodsIndexList = $query->getQuery()->getResult();

更多关于Symfony相关内容感兴趣的读者可查看本站专题:《Symfony框架入门教程》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《php优秀开发框架总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家基于Symfony2框架的PHP程序设计有所帮助。

相关文章

  • PHP 实现数组分页

    PHP 实现数组分页

    在日常开发的业务环境中,我们一般都会使用MySQL语句来实现分页的功能。但是,往往也有些数据并不多,或者只是获取 PHP 中定义的一些数组数据时需要分页的功能。这时,我们可以在一次查询中把所有的数据取出来,然后在 PHP 的代码层面进行分页功能的实现
    2021-06-06
  • Laravel框架学习笔记(一)环境搭建

    Laravel框架学习笔记(一)环境搭建

    本文主要是把自己学习Laravel框架中的经验写下来。这是本系列的第一篇,工欲善其事必先利其器,先把环境搭建好吧,之前也没写过什么文章,可能文章结构比较混乱,想到那写到哪。
    2014-10-10
  • PHP+XML 制作简单的留言本 图文教程

    PHP+XML 制作简单的留言本 图文教程

    本例演示了PHP如何操纵XML。留言本具有以下基本功能.
    2009-11-11
  • Yii2 rbac权限控制之菜单menu实例教程

    Yii2 rbac权限控制之菜单menu实例教程

    这篇文章主要介绍了Yii2 rbac权限控制之菜单menu实例教程的相关资料,需要的朋友可以参考下
    2016-04-04
  • Yii配置文件用法详解

    Yii配置文件用法详解

    这篇文章主要介绍了Yii配置文件用法,以实例形式较为详细的分析了项目开发中的控制器、项目名、pathinfo、日志等的配置技巧,非常具有实用价值,需要的朋友可以参考下
    2014-12-12
  • PHP对接微信公众平台消息接口开发流程教程

    PHP对接微信公众平台消息接口开发流程教程

    这篇文章主要介绍了PHP对接微信公众平台消息接口开发流程,如何使用PHP版接口操作公众平台消息,需要的朋友可以参考下
    2014-03-03
  • 详解php中的password_verify 和 password_hash密码验证

    详解php中的password_verify 和 password_hash密码验证

    验证密码是否和指定的散列值匹配,password_verify() 与 crypt() 兼容,因此,由 crypt() 创建的密码散列可以用于 password_verify() 一起使用,这篇文章主要介绍了php的password_verify 和 password_hash密码验证,需要的朋友可以参考下
    2023-08-08
  • Thinkphp中的volist标签用法简介

    Thinkphp中的volist标签用法简介

    通常volist标签多用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,对此可以直接使用volist标签进行输出
    2014-06-06
  • tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例

    tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例

    这篇文章主要介绍了tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能,结合实例形式分析了基于thinkPHP登陆判断、标志位运算等操作实现密码账号锁定功能,需要的朋友可以参考下
    2018-05-05
  • 最新制作ThinkPHP3.2.3完全开发手册

    最新制作ThinkPHP3.2.3完全开发手册

    本文给大家分享的是作者花了3个多小时制作完成的ThinkPHP3.2.3完全开发手册,非常的细致全面,有需要的小伙伴可以参考下
    2015-11-11

最新评论