Как оставить соединение в конструкторе запросов без сущности в доктрине Zend - PullRequest
0 голосов
/ 31 января 2019

Привет, у меня есть отношение M: M между двумя таблицами, Контактами и Тегами, и их таблица M: M называется Contacts_Tags:

Contacts
------------
ID
Name

Tags
-----------
ID
Name

Contacts_Tags
--------------
Contact_ID
Tag_ID

У меня есть объекты для Контактов, называемые Contact, и для Тегов, называемых Tag но не для таблицы Contacts_Tags.

Я хочу оставить соединение в конструкторе запросов

$queryBuilder                    =  $this->entityManager->getRepository(Contact::class)->createQueryBuilder("o")->select("o");
$queryBuilder->leftJoin(//here, "et", "WITH", "et.Contact_ID = o.ID")
             ->leftJoin(Tag::class, "t", "WITH", "t.ID = et.Tag_ID")
;

Но я не могу понять, как его добавить.Я пробовал документацию, но он говорит, что для добавления сущности, когда я добавляю сущность ContactTag, выдается ошибка, что сущность должна иметь первичный ключ.

Есть идеи?

1 Ответ

0 голосов
/ 01 февраля 2019

Для левого присоединения:

$queryBuilder->join(table, condition, columns, $queryBuilder::JOIN_LEFT);
with :
table is the name of a table or another Select or array [alias => table]
condition is a string (the same as in Sql language)
columns is an array like [alias => column_name, ...] or [column_name, ...], may be empty
$queryBuilder is a Select, can be replaced by \Zend\Sql\Select::JOIN_LEFT
...