2016-06-10 2 views
5

Я пытаюсь создать построитель запросов с использованием ORM. Но я натыкаюсь на поле на сущности с отношением к двум возможным таблицам. С этой структурой было бы (IMHO) невозможно сопоставить его в самой сущности.Может ли Doctrine DBAL быть смешанным с ORM Query Builder?

╔═══════╗  ╔═══════╗  ╔═══════╗ 
║ ValB ║  ║ Main ║  ║ ValC ║ 
╠══╦════╣  ╠══╦════╣  ╠══╦════╣ 
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║ 
╠══╬════╣ | ╠══╬════╣ | ╠══╬════╣ 
║ ║ ║ +--║ ║v_id║---+ ║ ║ ║ 
╠══╬════╣  ╠══╬════╣  ╠══╬════╣ 
║ ║ ║  ║ ║ ║  ║ ║ ║ 
╚══╩════╝  ╚══╩════╝  ╚══╩════╝ 

ли можно смешивать DBAL QueryBuilder с ОРМ QueryBuilder, или любым другим способом, который будет по-прежнему использовать ORM QueryBuilder в основном на коде.

PS. Я не проектировал db и im, просто оптимизируя его. извините за это не :(

ответ

5

Нет это не имеет смысла, потому что позже ОРМ должны отобразить результаты на объекты. Вы не можете отобразить как ValB и ValC к той же собственности в Main

Чтобы правильно это сделать , должны быть отдельные поля в таблице Main для ValB и ValC отношений. Даже если они имеют одинаковое значение. Как это

╔═══════╗  ╔════════╗  ╔═══════╗ 
║ ValB ║  ║ Main ║  ║ ValC ║ 
╠══╦════╣  ╠══╦═════╣  ╠══╦════╣ 
║ *║ pk ║-- + ║ *║ pk ║ +---║ *║ pk ║ 
╠══╬════╣ | ╠══╬═════╣ | ╠══╬════╣ 
║ ║ ║ +--║ ║vB_id║ | ║ ║ ║ 
╠══╬════╣  ╠══╬═════╣ | ╠══╬════╣ 
║ ║ ║  ║ ║vC_id║---+ ║ ║ ║ 
╚══╩════╝  ╚══╩═════╝  ╚══╩════╝ 

Вы можете скопировать v_id колонку, а затем сделать правильное отображение в доктрине.

+0

Да, я знаю об этом решении, но есть ли способ для этого не прибегать к созданию другой таблицы? потому что мы находимся в производстве, и очень утомительно и опасно мигрировать в эту структуру. – rrw

+1

Я подставил вашу проблему. Но нет. Вам, вероятно, придется остаться с DBAL только здесь. –

+0

спасибо, ур ответ, просветленный. Я просто думал, что, возможно, есть способ динамически отобразить сущность. Но я думаю, что нет никакого способа. Благодаря! :) – rrw

Смежные вопросы