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+javascript模拟Matrix画面
Oct 09 PHP
PHP与SQL注入攻击[三]
Apr 17 PHP
php中神奇的fastcgi_finish_request
May 02 PHP
PHP获取MAC地址的函数代码
Sep 11 PHP
coreseek 搜索英文的问题详解
Jun 08 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
Dec 31 PHP
Yii2实现ajax上传图片插件用法
Apr 28 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
Dec 28 PHP
YII2框架中excel表格导出的方法详解
Jul 21 PHP
PHP调用接口用post方法传送json数据的实例
May 31 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
Yii2框架中一些折磨人的坑
Dec 15 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
Apache2 httpd.conf 中文版
2006/11/17 PHP
php中的路径问题与set_include_path使用介绍
2014/02/11 PHP
什么是PEAR?什么是PECL?PHP中两个容易混淆的概念解释
2015/07/01 PHP
php技术实现加载字体并保存成图片
2015/07/27 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
layui数据表格自定义每页条数limit设置
2019/10/26 PHP
基于jquery ajax 用户无刷新登录方法详解
2012/04/28 Javascript
javascript修改IMG标签的src问题
2014/03/28 Javascript
JS函数的几种定义方式分析
2015/12/17 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
详解Vue 匿名、具名和作用域插槽的使用方法
2019/04/22 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
Vue3 中的数据侦测的实现
2019/10/09 Javascript
React中使用UMEditor的方法示例
2019/12/27 Javascript
python发送HTTP请求的方法小结
2015/07/08 Python
Python调用C# Com dll组件实战教程
2017/10/12 Python
Python+matplotlib绘制不同大小和颜色散点图实例
2018/01/19 Python
python机器学习之随机森林(七)
2018/03/26 Python
使用python实现数组、链表、队列、栈的方法
2019/12/20 Python
Django使用Profile扩展User模块方式
2020/05/14 Python
HTML5对比HTML4的主要改变和改进总结
2016/05/27 HTML / CSS
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
世界领先的艺术图书出版社:TASCHEN
2018/07/23 全球购物
倩碧英国官网:Clinique英国
2018/08/10 全球购物
证婚人搞笑证婚词
2014/01/10 职场文书
自动化专业职业生涯规划书范文
2014/01/16 职场文书
2014全国两会学习心得体会1000字
2014/03/10 职场文书
班级出游活动计划书
2014/08/15 职场文书
医院合作协议书
2014/08/19 职场文书
酒桌上的开场白
2015/06/01 职场文书
毕业典礼致辞
2015/07/29 职场文书
导游词之任弼时故居
2020/01/07 职场文书
Zabbix对Kafka topic积压数据监控的问题(bug优化)
2022/07/07 Servers