当前位置:首页 > CMS教程 > 其它CMS > 列表

Symfony2使用Doctrine进行数据库查询方法实例总结

发布:smiling 来源: PHP粉丝网  添加日期:2021-07-18 17:32:22 浏览: 评论:0 

这篇文章主要介绍了Symfony2使用Doctrine进行数据库查询方法,结合实例形式总结分析了基于Doctrine的基本查询、DQL及查询生成器的基本实现方法,需要的朋友可以参考下。

本文实例讲述了Symfony2使用Doctrine进行数据库查询方法,分享给大家供大家参考,具体如下:

预定义文中用到的变量:

$em = $this->getDoctrine()->getEntityManager();

$repository = $em->getRepository('AcmeStoreBundle:Product')

1、基本方法

  1. $repository->find($id); 
  2. $repository->findAll(); 
  3. $repository->findOneByName('Foo'); 
  4. $repository->findAllOrderedByName(); 
  5. $repository->findOneBy(array('name' => 'foo''price' => 19.99)); 
  6. $repository->findBy(array('name' => 'foo'),array('price' => 'ASC')); 

2、DQL

  1. $query = $em->createQuery( 
  2. 'SELECT p FROM AcmeStoreBundle:Product p WHERE p.price > :price ORDER BY p.price ASC' 
  3. )->setParameter('price', '19.99′); 
  4. $products = $query->getResult(); 

注:(1) 获得一个结果可以用:

$product = $query->getSingleResult();

运用 getSingleResult()方法你需要是用try catch语句将它包起来,来保证只返回一个结果,例子如下:

  1. ->setMaxResults(1); 
  2. try { 
  3. $product = $query->getSingleResult(); 
  4. } catch (\Doctrine\Orm\NoResultException $e) { 
  5. $product = null; 

(2) setParameter('price', '19.99′);运用这个外部方法来设置查询语句中的 “占位符”price 的值,而不是直接将数值写入查询语句中,有利于防止SQL注入攻击,你也可以设置多个参数:

  1. ->setParameters(array
  2. 'price' => '19.99′, 
  3. 'name' => 'Foo'
  4. )) 

3、 运用Doctrine的查询生成器

  1. $query = $repository->createQueryBuilder('p'
  2. ->where('p.price > :price'
  3. ->setParameter('price', '19.99′) 
  4. ->orderBy('p.price''ASC'
  5. ->getQuery(); 
  6. $products = $query->getResult(); 

希望本文所述对大家基于Symfony框架的PHP程序设计有所帮助。

Tags: Symfony2 Doctrine

分享到: