首先,我们知道根据查询中的列数量,可能会增加响应时间。
在Doctrine中调用以下商店,该商店有一个关系,它会带来两个实体的所有列。
public function index()
{
$this->students = $this->model->getRepository()->findAll();
}
但是考虑一下我之前给出的声明,这个存储库的返回比非关系时更耗时吗?
等问题。我可以选择要返回此存储库的列吗?例如,存储库返回上面的内容:
id (student organization)
name (student organization)
id_class (class entity)
但我想只返回学生的名字。举个例子:
public function index()
{
$this->students = $this->model->getRepository()->findAll()->onlyColumns("name");
// Or so to catch more than one column
$this->students = $this->model->getRepository()->findAll()->onlyColumns("name, dateOfBirth");
}
答案 0 :(得分:2)
您要使用的是queryBuilder:
http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html
当你在存储库上执行 - > findAll()时,它会直接进入数据库并获取所有内容(很快就会说)。要操纵你从数据库中获得的东西,你应该做:
$repo->createQueryBuilder()
->select('column1,column2')
->getQuery()
->getResult();