Учение ОРМ СОЕДИНЯЕТСЯ - PullRequest
       4

Учение ОРМ СОЕДИНЯЕТСЯ

0 голосов
/ 01 декабря 2009

У меня есть несколько простых классов, все расширяющие Doctrine_Record.

Теперь я хочу сделать несколько более сложный запрос с помощью Inner Join, а не просто извлекать данные из таблицы.

Я использую DQL, обязывает ли меня вручную определять связь между двумя таблицами? Должен ли я определить этот класс отношений или мне лучше обновить schema.yml и каким-то образом заново сгенерировать код класса?

Никакие объединения DQL невозможны без подготовки таких явных отношений, верно?

Ответы [ 2 ]

1 голос
/ 02 декабря 2009

Вы можете добавить отношение к вашему файлу .yaml и затем заново сгенерировать ваши классы таким образом. Вот Документация доктрины об отношениях в файлах Yaml.

Вам потребуется заново сгенерировать вашу базу данных, чтобы Doctrine могла добавить правильные ограничения внешнего ключа на основе новых отношений. Это относительно просто, используя команду Doctrine командной строки , и предполагается, что вы не заботитесь о потере своих данных. Если вы заботитесь о потере данных, вы должны использовать Doctrine для управления своими миграциями, но это выходит за рамки вашего вопроса. Вы можете найти больше информации о миграции, посмотрев на ответ А Франкеля на этот вопрос .

1 голос
/ 02 декабря 2009

Я бы восстановил код класса. Я считаю хорошей практикой использовать схему или базу данных в качестве авторитетного источника, а затем просто заново создавать и / или использовать миграции. Так проще поддерживать вещи таким образом. То же самое касается Propel и Doctrine.

...