当前位置: 移动技术网 > IT编程>开发语言>PHP > Symfony2使用Doctrine进行数据库查询方法实例总结

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

本文实例讲述了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程序设计有所帮助。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网