Использование Doctrine с представлениями - генерируется поле dud 'id' - PullRequest
1 голос
/ 20 августа 2010

У меня есть БД (да, та), которая оказывается намного проще для доступа через представления, чем необработанные таблицы.В целом это довольно неплохо сочетается с Doctrine, но есть одна проблема.Doctrine не может идентифицировать первичный ключ в таблице представлений при генерации YAML из схемы базы данных, поэтому он изобретает один, называемый id.Генерация классов из этого означает, что все запросы терпят неудачу из-за отсутствия этого поля идентификатора.

Можно ли как-нибудь намекнуть сценарию генератора, что он не должен создавать это поле, и указать на тот, который болееподходящее?Я могу видеть, как это сделать в YAML или в классе с аннотациями, но нет способа сделать это в БД.

Предложения приветствуются.

(Любой, кто следит за моимвопросы (почему?), вероятно, помогли бы понять, как весело я работаю и с Doctrine, и с этой базой данных. Я думаю, это называется «опытом обучения».)

Ответы [ 2 ]

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

возможно, не совсем то, что вы просили, но Другое решение состоит в том, чтобы поместить это в класс модели

public function setUp() {
    Doctrine_Core::getTable('your_view_name')->removeColumn('id');
    parent::setUp();
}

надеюсь, что это поможет кому-то с этой проблемой

0 голосов
/ 20 августа 2010

Я понятия не имею, как это сделать в YAML, но вы можете просто удалить определение столбца ID из сгенерированного файла PHP (Base). Не самое «элегантное» решение, но я думаю, что довод Doctrine - всегда добавлять первичный ключ.

Кстати, есть ли что-нибудь полезное для вас на http://www.doctrine -project.org / projects / orm / 1.2 / docs / manual / component-Overview / en # views ?

...