Как создавать самоссылающиеся таблицы в Symfony с помощью Propel ORM - PullRequest
4 голосов
/ 30 июня 2011

У меня ошибка при попытке построить модель из существующей базы данных в проекте Symfony с использованием Propel ORM.

Ошибка такая:

build-propel.xml: 474: 20: отношение 1: 1, выраженное внешним ключом a_table_on_my_schema_FK_1, определяется в обоих направлениях;Propel в настоящее время не поддерживает это (если у вас должны быть оба ограничения внешнего ключа, рассмотрите возможность добавления этого ограничения в пользовательский файл SQL.)

файл schema.yml действительно обширный, но описание таблицыЭто приводит к ошибке (первая неправильно создана) выглядит следующим образом:

self_referenced_table:
_attributes: { phpName: SelfReferencedTable }
[...]
JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }
[...]

Я думаю, что эта ошибка из-за таблицы с собственной ссылкой.

Мне нужно реализовать неравноправное отношение между многими элементами, поэтому эта реализация является хорошим способом сделать это.Но вызывает у меня эту проблему на строительстве.

Можете ли вы дать мне несколько подсказок?у кого-нибудь была эта ошибка?что бы вы сделали?

спасибо !!: D

1 Ответ

0 голосов
/ 14 июля 2011

Решено: Это не была ошибка таблицы, на которую ссылается @Colin Fine. Ошибка была в исходной базе данных. Я сгенерировал schema.yml из существующей базы данных на MySQL. Произошла ошибка: целевой атрибут ссылки не был идентификатором таблицы, а сам атрибут ссылки. Итак, сгенерированный schema.yml содержал неправильные определения. Я думаю, что я недостаточно хорошо объяснил:

self_referenced_table был таким:

_attributes: { phpName: SelfReferencedTable }<br> [...]<br> JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: JERARQUIC_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }<br> [...]

self_referenced_table должно быть:

_attributes: { phpName: SelfReferencedTable } [...]<br> JERARQUIC_CODE: { phpName: JerarquicCode, type: INTEGER, size: '8', required: false, foreignTable: self_referenced_table, foreignReference: TABLE_CODE, onDelete: RESTRICT, onUpdate: RESTRICT }<br> [...]

...