JOIN DQL (symfony2) несколько соединений между двумя таблицами

111
9

У меня проблема в моем DQL-запросе. У меня есть таблица, которая имеет 3 внешних ключа userId, userRId и userAId. Два из этих внешних ключей могут быть NULL.

Я хочу объединить все внешние ключи в запросе, но я не знаю, как объединить два или три внешних ключа между одними и теми же таблицами. (см. запрос) Может ли кто-нибудь дать мне некоторые идеи?

   **TABLE A**
id userId userRId userAId
1 2 NULL NULL
1 2 1 NULL
1 2 NULL 1

**TABLE USER**
userId name
2 xxxx
1 xxxx

The DQL query:

"SELECT FROM nasyBundle:A a JOIN a.userId u , a JOIN userRId , a JOIN userAid
WHERE ...

спросил(а) 2021-01-19T16:35:21+03:00 9 месяцев назад
1
Решение
91

В DQL вы работаете с объектами (сущностями), а не с таблицами (на основе сопоставлений). Поэтому, когда у вас есть такие объекты:

class User
{
private $id;
private $name;
}

class TableA
{
private $id;
private $user;
private $userR;
private $userA;
}

вы можете создать такой запрос (когда у вас есть действительные сопоставления)

SELECT a
FROM nastyBundle:TableA a
INNER JOIN a.user u
LEFT JOIN a.userR ur
LEFT JOIN a.userA ua

Но да, чтобы работать с этим, вам нужна картографическая информация. Если у вас нет сопоставлений, вы можете сгенерировать его с помощью doctrine: mapping: import просто введите в проект symfony, чтобы читать больше php app/console help doctrine:mapping:import

ответил(а) 2021-01-19T16:35:21+03:00 9 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема