Выберите определенные столбцы из репозитория в Doctrine 2

Во-первых, мы знаем, что в зависимости от количества столбцов в запросе может увеличиться время отклика.

В 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");
}

2

Решение

То, что вы хотите использовать, это queryBuilder:

http://doctrine-orm.readthedocs.org/en/latest/reference/query-builder.html

когда вы делаете -> findAll () в хранилище, он идет прямо к базе данных и получает все (кратко). Чтобы манипулировать тем, что вы получаете из базы данных, вы должны сделать:

$repo->createQueryBuilder()
->select('column1,column2')
->getQuery()
->getResult();
3

Другие решения

Других решений пока нет …