我正在尝试优化查询,尝试选择更少的可能值。
例如,我有一个实体“Anagrafic”,其中包含您的姓名、地址、城市等,
以及一个我只想更改其中一个字段的表单,例如地址。
我创建了这个查询:
//AnagraficRepository
public function findAddress($Id)
{
$qb = $this->createQueryBuilder('r')
->select('r.address')
->where('r.id = :id')
->setParameter('id', $Id)
->getQuery();
return $qb->getResult();
}
这个查询有问题,因为我没有返回任何值,但是如果我正常执行查询:
//Controller
$entity = $em->getRepository('MyBusinessBundle:Anagrafic')->find($id);
返回正确的值。
如何执行仅选择一列的查询?
由于您请求每条记录的单列,因此您必然会期望array
。话虽如此,你应该更换getResult
with getArrayResult()
因为你无法强制对象水化:
$data = $qb->getArrayResult();
Now, you have structure:
$data[0]['address']
$data[1]['address']
....
希望这可以帮助。
至于评论中有关性能的讨论,我总体上同意您的观点,即不希望每次都获取所有 30 列。但是,在这种情况下,您应该考虑写命名查询为了最大限度地减少数据库被更改时的影响。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)