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 相关文章推荐
用定制的PHP应用程序来获取Web服务器的状态信息
Oct 09 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
php验证邮箱和ip地址最简单方法汇总
Oct 30 PHP
mysql_escape_string()函数用法分析
Apr 25 PHP
highchart数据源纵轴json内的值必须是int(详解)
Feb 20 PHP
PHP实现的数独求解问题示例
Apr 18 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
php如何比较两个浮点数是否相等详解
Feb 12 PHP
PHP中“=>
Mar 01 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项目的方法
2006/10/09 PHP
PHP中HTTP方式下的Gzip压缩传输方法举偶
2007/02/15 PHP
PHP file_get_contents设置超时处理方法
2013/09/30 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
图片按比例缩放函数
2006/06/26 Javascript
javascript 命名规则 变量命名规则
2010/02/25 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
2013/11/21 Javascript
JavaScript常用标签和方法总结
2015/09/01 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
2017/06/25 Javascript
详谈js对url进行编码和解码(三种方式的区别)
2017/08/16 Javascript
JS实现拖动模糊框特效
2020/08/25 Javascript
JS使用setInterval计时器实现挑战10秒
2020/11/08 Javascript
python sqlobject(mysql)中文乱码解决方法
2008/11/14 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
python实现数独游戏 java简单实现数独游戏
2018/03/30 Python
Python使用random模块生成随机数操作实例详解
2019/09/17 Python
python反转列表的三种方式解析
2019/11/08 Python
Python计算矩阵的和积的实例详解
2020/09/10 Python
python切片作为占位符使用实例讲解
2021/02/17 Python
CSS3过渡transition效果实例介绍
2016/05/03 HTML / CSS
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
Myprotein法国官网:欧洲第一运动营养品牌
2019/03/26 全球购物
Java中采用什么结构来捕获、处理异常?各子句的顺序、功能如何
2013/10/07 面试题
中学实习教师自我鉴定
2013/12/12 职场文书
工地门卫岗位职责
2013/12/30 职场文书
先进党支部申报材料
2014/12/24 职场文书
婚礼新人答谢词
2015/01/04 职场文书
销售开票员岗位职责
2015/04/15 职场文书
关于保护环境的建议书
2019/06/24 职场文书
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP
DjangoRestFramework 使用 simpleJWT 登陆认证完整记录
2021/06/22 Python
python异步的ASGI与Fast Api实现
2021/07/16 Python
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技