Symfony2使用Doctrine进行数据库查询方法实例总结


Posted in PHP onMarch 18, 2016

本文实例讲述了Symfony2使用Doctrine进行数据库查询方法。分享给大家供大家参考,具体如下:

预定义文中用到的变量:

$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('AcmeStoreBundle:Product')

1、基本方法

$repository->find($id);
$repository->findAll();
$repository->findOneByName('Foo');
$repository->findAllOrderedByName();
$repository->findOneBy(array('name' => 'foo', 'price' => 19.99));
$repository->findBy(array('name' => 'foo'),array('price' => 'ASC'));

2、DQL

$query = $em->createQuery(
'SELECT p FROM AcmeStoreBundle:Product p WHERE p.price > :price ORDER BY p.price ASC'
)->setParameter('price', '19.99′);
$products = $query->getResult();

注:

(1) 获得一个结果可以用:

$product = $query->getSingleResult();

运用 getSingleResult()方法你需要是用try catch语句将它包起来,来保证只返回一个结果,例子如下:

->setMaxResults(1);
try {
$product = $query->getSingleResult();
} catch (\Doctrine\Orm\NoResultException $e) {
$product = null;
}

(2) setParameter('price', '19.99′);运用这个外部方法来设置查询语句中的 “占位符”price 的值,而不是直接将数值写入查询语句中,有利于防止SQL注入攻击,你也可以设置多个参数:

->setParameters(array(
'price' => '19.99′,
'name' => 'Foo',
))

3、 运用Doctrine的查询生成器

$query = $repository->createQueryBuilder('p')
->where('p.price > :price')
->setParameter('price', '19.99′)
->orderBy('p.price', 'ASC')
->getQuery();
$products = $query->getResult();

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

PHP 相关文章推荐
在字符串中把网址改成超级链接
Oct 09 PHP
缓存技术详谈―php
Dec 14 PHP
PHP form 表单传参明细研究
Jul 17 PHP
PHP图片等比例缩放生成缩略图函数分享
Jun 10 PHP
ThinkPHP3.1.3版本新特性概述
Jun 19 PHP
php按单词截取字符串的方法
Apr 07 PHP
php计算整个目录大小的方法
Jun 01 PHP
PHP模板引擎Smarty内建函数foreach,foreachelse用法分析
Apr 11 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
Nov 29 PHP
THINKPHP截取中文字符串函数实例代码
Mar 20 PHP
yii2项目实战之restful api授权验证详解
May 20 PHP
使用laravel和ECharts实现折线图效果的例子
Oct 09 PHP
Symfony2创建页面实例详解
Mar 18 #PHP
symfony2.4的twig中date用法分析
Mar 18 #PHP
Symfony2之session与cookie用法小结
Mar 18 #PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 #PHP
Symfony2实现在controller中获取url的方法
Mar 18 #PHP
Symfony2框架学习笔记之表单用法详解
Mar 18 #PHP
Symfony2框架学习笔记之HTTP Cache用法详解
Mar 18 #PHP
You might like
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
基于php split()函数的用法详解
2013/06/05 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
input 输入框内的输入事件详细分析
2010/03/17 Javascript
Colortip基于jquery的信息提示框插件在IE6下面的显示问题修正方法
2010/12/06 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
Node.js刷新session过期时间的实现方法推荐
2016/05/18 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
JS编写函数实现对身份证号码最后一位的验证功能
2016/12/29 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
关于bootstrap日期转化,bootstrap-editable的简单使用,bootstrap-fileinput的使用详解
2017/05/12 Javascript
浅谈AngularJS中使用$resource(已更新)
2017/09/14 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
vue实现底部菜单功能
2018/07/24 Javascript
vue项目部署到Apache服务器中遇到的问题解决
2018/08/24 Javascript
js尾调用优化的实现
2019/05/23 Javascript
微信小程序在text文本实现多种字体样式
2019/11/08 Javascript
JQuery中DOM节点的操作与访问方法实例分析
2019/12/23 jQuery
JQuery事件委托(适用于给动态生成的脚本元素添加事件)
2020/02/01 jQuery
python网页请求urllib2模块简单封装代码
2014/02/07 Python
python实现将汉字转换成汉语拼音的库
2015/05/05 Python
如何优雅地处理Django中的favicon.ico图标详解
2018/07/05 Python
安装python及pycharm的教程图解
2019/10/10 Python
python用类实现文章敏感词的过滤方法示例
2019/10/27 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Django封装交互接口代码
2020/07/12 Python
matplotlib交互式数据光标实现(mplcursors)
2021/01/13 Python
Fenty Beauty官网:蕾哈娜创立的美妆品牌
2021/01/07 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
校园学雷锋活动月总结
2014/03/09 职场文书
毕业生就业推荐表导师评语
2014/12/31 职场文书