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 相关文章推荐
Ajax+PHP 边学边练之四 表单
Nov 27 PHP
PHP学习 变量使用总结
Mar 24 PHP
用php实现百度网盘图片直链的代码分享
Nov 01 PHP
php的memcache类分享(memcache队列)
Mar 26 PHP
php设计模式之简单工厂模式详解
Sep 04 PHP
PHP字符串word末字符实现大小写互换的方法
Nov 10 PHP
php实现cookie加密的方法
Mar 10 PHP
php cli配置文件问题分析
Oct 15 PHP
Joomla简单判断用户是否登录的方法
May 04 PHP
PHP中ltrim()函数的用法与实例讲解
Mar 28 PHP
Laravel5.7框架安装与使用学习笔记图文详解
Apr 02 PHP
php实现微信和支付宝支付的示例代码
Aug 11 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 用sock技术发送邮件的函数
2007/07/21 PHP
解析phpstorm + xdebug 远程断点调试
2013/06/20 PHP
64位windows系统下安装Memcache缓存
2015/12/06 PHP
PHPCMS V9 添加二级导航的思路详解
2016/10/20 PHP
javascript 网页跳转的方法
2008/12/24 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
表头固定(利用jquery实现原理介绍)
2012/11/08 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
使用递归遍历对象获得value值的实现方法
2016/06/14 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
认识jQuery的Promise的具体使用方法
2017/10/10 jQuery
JavaScript登录验证基础教程
2017/11/01 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
解决vue打包项目后刷新404的问题
2018/03/06 Javascript
详解如何用babel转换es6的class语法
2018/04/03 Javascript
javascript使用正则实现去掉字符串前面的所有0
2018/07/23 Javascript
vscode 开发Vue项目的方法步骤
2018/11/25 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
Python中zip()函数用法实例教程
2014/07/31 Python
Python3.5常见内置方法参数用法实例详解
2019/04/29 Python
python shell命令行中import多层目录下的模块操作
2020/03/09 Python
django admin 根据choice字段选择的不同来显示不同的页面方式
2020/05/13 Python
python实现ping命令小程序
2020/12/28 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
日本热销NO.1胶原蛋白冻:Aishitoto爱希特多
2019/06/20 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
大学团支书的自我评价分享
2013/12/14 职场文书
餐厅楼面主管岗位职责范本
2014/02/16 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
关于做家务的心得体会
2016/01/23 职场文书
教您怎么制定西餐厅运营方案 ?
2019/07/05 职场文书
python四种出行路线规划的实现
2021/06/23 Python