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 相关文章推荐
第一节--面向对象编程
Nov 16 PHP
dedecms采集中可以过滤多行代码的正则表达式
Mar 17 PHP
PHP URL地址获取函数代码(端口等) 推荐
May 15 PHP
php学习笔记 数组的常用函数
Jun 13 PHP
php中关于codeigniter的xmlrpc的类在进行数据交换时的类型问题
Jul 03 PHP
php获取301跳转URL简单实例
Dec 16 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
Mar 30 PHP
php使用GD2绘制几何图形示例
Feb 15 PHP
php 浮点数比较方法详解
May 05 PHP
ThinkPHP使用getlist方法实现数据搜索功能示例
May 08 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
thinkPHP5框架闭包函数与子查询传参用法示例
Aug 02 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
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
ThinkPHP有变量的where条件分页实例
2014/11/03 PHP
PHP设置头信息及取得返回头信息的方法
2016/01/25 PHP
PHP的Laravel框架中使用消息队列queue及异步队列的方法
2016/03/21 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
js关于精确计算和数值格式化以及直接引js文件
2014/01/28 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
微信小程序 解决请求服务器手机预览请求不到数据的方法
2017/01/04 Javascript
js replace()去除代码中空格的实例
2017/02/14 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
详解vue axios二次封装
2018/07/22 Javascript
vue中各种通信传值方式总结
2019/02/14 Javascript
JavaScript位置参数实现原理及过程解析
2020/09/14 Javascript
使用Vant完成通知栏Notify的提示操作
2020/11/11 Javascript
Python中使用动态变量名的方法
2014/05/06 Python
wxPython中文教程入门实例
2014/06/09 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
2018/04/21 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python网络应用开发知识点浅析
2019/05/28 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Ubuntu中配置TensorFlow使用环境的方法
2020/04/21 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
SQL Server提供的3种恢复模型都是什么? 有什么区别?
2012/05/13 面试题
爱国主义教育活动总结
2014/05/07 职场文书
优质护理服务演讲稿
2014/05/07 职场文书
2015年三年级班主任工作总结
2015/05/21 职场文书
钓鱼岛事件感想
2015/08/11 职场文书
tensorflow学习笔记之tfrecord文件的生成与读取
2021/03/31 Python
世界十大动漫制作公司排行榜,迪士尼上榜,第二是美国代表性文化符
2022/03/18 欧美动漫
SpringCloud超详细讲解Feign声明式服务调用
2022/06/21 Java/Android
IDEA中sout快捷键无效问题的解决方法
2022/07/23 Java/Android