Rumah > php教程 > php手册 > Symfony2使用Doctrine进行数据库查询方法实例总结

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

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-06 19:32:48
asal
1172 orang telah melayarinya

本文实例讲述了Symfony2使用Doctrine进行数据库查询方法。分享给大家供大家参考,具体如下: 预定义文中用到的变量: $em = $this-getDoctrine()-getEntityManager();$repository = $em-getRepository('AcmeStoreBundle:Product') 1、基本方法 $repository-f

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

预定义文中用到的变量:

$em = $this->getDoctrine()->getEntityManager();
$repository = $em->getRepository('AcmeStoreBundle:Product')

Salin selepas log masuk

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'));

Salin selepas log masuk

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();

Salin selepas log masuk

注:

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

$product = $query->getSingleResult();
Salin selepas log masuk

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

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

Salin selepas log masuk

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

->setParameters(array(
'price' => '19.99′,
'name' => 'Foo',
))

Salin selepas log masuk

3、 运用Doctrine的查询生成器

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

Salin selepas log masuk

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

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Isu terkini
Tolong beri saya pengalaman menggunakan symfony2
daripada 1970-01-01 08:00:00
0
0
0
Adakah symfony2 mempunyai bundle yar sambungan php?
daripada 1970-01-01 08:00:00
0
0
0
Sila minta bahan pembelajaran symfony2
daripada 1970-01-01 08:00:00
0
0
0
isu pengalihan symfony2.
daripada 1970-01-01 08:00:00
0
0
0
Cadangan popular
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan