Извлечение только определенных полей с доктриной orm entitymanager - PullRequest
0 голосов
/ 09 марта 2019

В данный момент я делаю запрос на выборку всех пользователей из базы данных с

$users = $this->entityManager
    ->getRepository(User::class)
    ->findBy([
        'userName' => $username,
    ]);

Проблема в том, что он принимает все свойства, которые есть у пользователя. Мне нужны только определенные поля или я хочу убедиться, что я не получаю определенные поля. (Мне не нужно поле со списком, если электронная почта была проверена, например).

Можно ли дать запросу имена полей, которые он должен получить? Возможно ли это вообще или этот запрос всегда и только получит полный объект?

Другой логический вариант - сделать запрос вроде:

SELECT (userName, location)
FROM `user`

Но возможен ли первый подход? и если да, то как?

редактирование:

То, что я хотел в первом запросе, невозможно, поэтому оно появляется. sql / dql нужен для ее решения Я работаю так:

 $query = $this->entityManager->createQueryBuilder();
 $users = $query
     ->select('u.username')
     ->from(User::class, 'u')
     ->where('u.username = :username')
     ->setParameter('username', $username)
     ->getQuery()
     ->execute();

1 Ответ

0 голосов
/ 09 марта 2019

Для этого вам нужен собственный sql (или dql в этом случае, что вы предпочитаете):

Перейдите в хранилище пользователя и создайте функцию для получения того, что вам нужно, например ...

public function extractCertainFieldsFromUser()
    return $this->createQueryBuilder('u')
        ->select("u.username, u.location")
        ->getQuery()
        ->getResult()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...