Я пытаюсь получить объект из базы данных методом репозитория findOneBy
(id).
В основном, линия выглядит так:
public function findAssignedTickets(User $user)
{
$userId = $user->getId();
$ticketMapping = new ResultSetMapping;
$ticketMapping->addEntityResult(Ticket::class, 't');
$ticketMapping->addFieldResult('t', 'id', 'id');
// Postgresql Native query, select all tickets where participants array includes the userId
$query = "SELECT *
FROM (
SELECT id, array_agg(e::text::int) arr
FROM ticket, json_array_elements(participants) e
GROUP BY 1
) s
WHERE
$userId = ANY(arr);
";
$results = $this->getEntityManager()->createNativeQuery($query, $ticketMapping)->getResult();
$results = array_map(function($item) {
return $item->getId();
}, $results); // Transform to array in integers
dump($results); // array:2 [0 => 83, 1 => 84] -> It's correct
$tickets = [];
foreach ($results as $ticketId) {
dump($this->findOneById($ticketId));
// $ticket = $this->findOneById($ticketId);
// $tickets[] = [
// 'identifier' => $ticket->getIdentifier(),
// 'title' => $ticket->getTitle(),
// 'author' => $ticket->getAuthor()->getUsername(),
// 'status' => $ticket->getStatus(),
// 'created' => $ticket->getCreatedAt()->format('c'),
// 'updated' => $ticket->getUpdatedAt()->format('c'),
// ]; // Ticket formatting to send in json
}
return $tickets;
}
, который выдаст:
И я уверен, что полученный идентификатор соответствует строке в базе данных, и что база данных содержит данные, и все поля принадлежат непосредственно сущности, за исключением автора, который представляет собой ManyToOne, и я слышал о ленивом отображении Доктрина, но это не должно происходить в других областях.
Почему я не могу получить данные из Объекта даже с помощью геттеров, и почему для всех значений установлено нулевое значение За исключением для идентификатора?
РЕДАКТИРОВАТЬ: мне было интересно, было ли это связано с ResultSetMapping я использовал для получения идентификаторов билетов в совершенно отдельный запрос ранее, и когда я добавил addFieldResult('t', 'title', 'title');
, он сделал работу, но не в других полях, еще одна загадка.