Связанные таблицы и каскадное удаление
Добрый день всем! Есть проблема с удалением объектов.
Есть кастомный объект, назовем Object, с ним связан объект ObjectFiles один-ко-многим. А уже с объектом objectFiles связан один-ко-многим объект ObjectFilesDownload. Проблема возникла при удалении объекта Object. Я ожидал удаление объкта и всех связанных записей с данным объектом. Увы, объект удаляется, связанные нет. Ошибка при удалении зависимых объектов — Error removing dependent object.
Проблема из- за связи objectFiles с ObjectFilesDownload. Как обойти, в чем загвоздка?
ЗЫ: С Object у меня связаны еще несколько объектов (уже без вложений), из них удаляется все нормально.
Есть кастомный объект, назовем Object, с ним связан объект ObjectFiles один-ко-многим. А уже с объектом objectFiles связан один-ко-многим объект ObjectFilesDownload. Проблема возникла при удалении объекта Object. Я ожидал удаление объкта и всех связанных записей с данным объектом. Увы, объект удаляется, связанные нет. Ошибка при удалении зависимых объектов — Error removing dependent object.
Проблема из- за связи objectFiles с ObjectFilesDownload. Как обойти, в чем загвоздка?
ЗЫ: С Object у меня связаны еще несколько объектов (уже без вложений), из них удаляется все нормально.
Комментарии: 3
Каскадно не удалял… но спрошу: точно дважды проверили описание связей объектов?
Схему лучше приложу (сокращеную)
<object class="TechnicalSolutions" table="mstr_solution" extends="xPDOSimpleObject">
<composite alias="DataFilesSolution" local="id" class="DataFilesSolution" foreign="solution_id" cardinality="many" owner="local" />
</object>
<object class="DataFilesSolution" table="mstr_solution_data_files" extends="xPDOSimpleObject">
<field key="solution_id" dbtype="int" precision="10" phptype="integer" null="false" />
<aggregate alias="SolutionDataFiles" class="TechnicalSolutions" local="solution_id" foreign="id" cardinality="one" owner="foreign" />
<composite alias="DownloadFileSolution" local="id" class="DownloadFileSolution" foreign="file_id" cardinality="many" owner="local" />
</object>
<object class="DownloadFileSolution" table="mstr_solution_data_files_download" extends="xPDOSimpleObject">
<field key="file_id" dbtype="int" precision="10" phptype="integer" null="false" />
<aggregate alias="FileSolutionDownload" class="DataFilesSolution" local="file_id" foreign="id" cardinality="one" owner="foreign" />
</object>
Судя по всему это баг xPDOObject::remove(). github.com/modxcms/xpdo/issues/48
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.