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写的MySQL数据库用户认证系统代码
Mar 22 PHP
GBK的页面输出JSON格式的php函数
Feb 16 PHP
php不使用插件导出excel的简单方法
Mar 04 PHP
一个php生成16位随机数的代码(两种方法)
Sep 16 PHP
php中mkdir函数用法实例分析
Nov 15 PHP
PHP扩展开发入门教程
Feb 26 PHP
纯PHP代码实现支付宝批量付款
Dec 24 PHP
PHP使用内置函数生成图片的方法详解
May 09 PHP
PHP中include/require/include_once/require_once使用心得
Aug 28 PHP
PHP简单实现记录网站访问量功能示例
Jun 06 PHP
php如何计算两坐标点之间的距离
Dec 29 PHP
PHP关于foreach复制知识点总结
Jan 28 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP面向对象程序设计之接口用法
2014/08/20 PHP
[原创]php实现子字符串位置相互对调互换的方法
2016/06/02 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
JavaScript.Encode手动解码技巧
2010/07/14 Javascript
自动最大化窗口的Javascript代码
2013/05/22 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
写出高效jquery代码的19条指南
2014/03/19 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
easyui导出excel无法弹出下载框的快速解决方法
2016/11/10 Javascript
如何获取TypeScript的声明文件.d.ts
2018/05/01 Javascript
Vue 实现CLI 3.0 + momentjs + lodash打包时优化
2019/11/13 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Python使用新浪微博API发送微博的例子
2014/04/10 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python用 KNN 进行验证码识别的实现方法
2018/02/06 Python
Numpy 将二维图像矩阵转换为一维向量的方法
2018/06/05 Python
详解Python logging调用Logger.info方法的处理过程
2019/02/12 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
Pycharm学生免费专业版安装教程的方法步骤
2020/09/24 Python
利用纯CSS3实现动态的自行车特效源码
2017/01/20 HTML / CSS
size?荷兰官方网站:英国高级运动鞋精品店
2020/07/24 全球购物
W Hamond官网:始于1979年的钻石专家
2020/07/20 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
简历中的自我评价范文
2014/02/05 职场文书
高中生评语大全
2014/04/25 职场文书
保护黄河倡议书
2014/05/16 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
2014年节能降耗工作总结
2014/12/11 职场文书
戒赌保证书
2015/05/11 职场文书
发票退票证明
2015/06/24 职场文书
校园安全主题班会
2015/08/12 职场文书
Mysql将字符串按照指定字符分割的正确方法
2022/05/30 MySQL