本文实例讲述了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 (doctrineormnoresultexception $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程序设计有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!