Lug*_*ino 6 symfony doctrine-orm symfony-2.1
我正在尝试优化查询以尝试选择更少的可能值.例如,我有一个实体"Anagrafic",其中包含您的姓名,地址,城市等,以及我想要更改其中一个的表单这些字段,如地址.我创建了这个查询:
//AnagraficRepository
public function findAddress($Id)
{
$qb = $this->createQueryBuilder('r')
->select('r.address')
->where('r.id = :id')
->setParameter('id', $Id)
->getQuery();
return $qb->getResult();
}
Run Code Online (Sandbox Code Playgroud)
此查询有问题,因为我没有返回任何值,但如果我正常执行查询:
//Controller
$entity = $em->getRepository('MyBusinessBundle:Anagrafic')->find($id);
Run Code Online (Sandbox Code Playgroud)
返回正确的值.如何只选择一列查询?
Jov*_*vic 13
由于您要求每条记录的单列,您必然会遇到array.这就是说,你应该更换getResult使用getArrayResult(),因为你不能强制对象水化:
$data = $qb->getArrayResult();
Now, you have structure:
$data[0]['address']
$data[1]['address']
....
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
至于关于评论中的性能的讨论,我通常同意你的意思,因为不希望每次都进行30次列提取.但是,在这种情况下,您应该考虑编写命名查询,以便在数据库被更改时将影响降至最低.
| 归档时间: |
|
| 查看次数: |
28896 次 |
| 最近记录: |