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版本号
Oct 09 PHP
php 一元分词算法
Nov 30 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
PHP小教程之实现链表
Jun 09 PHP
实例讲解PHP面向对象之多态
Aug 20 PHP
php实现的树形结构数据存取类实例
Nov 29 PHP
php实现用于计算执行时间的类实例
Apr 18 PHP
详解PHP中的null合并运算符
Dec 30 PHP
微信小程序 消息推送php服务器验证实例详解
Mar 30 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
PHP实现文件上传后台处理脚本
Mar 04 PHP
YII2框架中添加自定义模块的方法实例分析
Mar 18 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生成xml时添加CDATA标签的方法
2014/10/17 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
linux平台编译安装PHP7并安装Redis扩展与Swoole扩展实例教程
2016/09/30 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
javascript 面向对象思想 附源码
2009/07/07 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
ECMAScript6的新特性箭头函数(Arrow Function)详细介绍
2014/06/07 Javascript
基于NodeJS的前后端分离的思考与实践(一)全栈式开发
2014/09/26 NodeJs
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
javascript 获取浏览器版本
2015/01/21 Javascript
jquery实现在光标位置插入内容的方法
2015/02/05 Javascript
JS常见疑难点分析之match,charAt,charCodeAt,map,search用法分析
2016/12/25 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
nodejs个人博客开发第六步 数据分页
2017/04/12 NodeJs
详解Angular6 热加载配置方案
2018/08/18 Javascript
使用Vue中 v-for循环列表控制按钮隐藏显示功能
2019/04/23 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
Python自定义主从分布式架构实例分析
2016/09/19 Python
python批量读取txt文件为DataFrame的方法
2018/04/03 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
python3在同一行内输入n个数并用列表保存的例子
2019/07/20 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
Python requests HTTP验证登录实现流程
2020/11/05 Python
跨域修改iframe页面内容详解
2019/10/31 HTML / CSS
澳大利亚第一的设计师礼服租赁网站:GlamCorner
2017/08/13 全球购物
美国婴童服装市场上的领先品牌:Carter’s
2018/02/08 全球购物
Rodd & Gunn澳大利亚官网:新西兰男装品牌
2018/09/25 全球购物
师范学院教师自荐书
2014/01/31 职场文书
同居协议书范本
2014/04/23 职场文书
中学生学雷锋演讲稿
2014/04/26 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
产品售后服务承诺书
2014/05/21 职场文书
现实表现证明材料
2015/06/19 职场文书
2019各种承诺书范文
2019/06/24 职场文书
使用CSS实现音波加载效果
2023/05/07 HTML / CSS