Не могу удалить сущность с наследованием по доктрине - PullRequest
0 голосов
/ 01 апреля 2019

С этими двумя сущностями

Entity\AbstractSurveyAnswer:
    type: entity
    table: survey_answers
    inheritanceType: JOINED
    discriminatorColumn:
        name: type_class
        type: string
    discriminatorMap:
        database: SurveyDatabaseAnswer
        client_text: SurveyClientTextAnswer
        client_number: SurveyClientNumberAnswer
        client_date: SurveyClientDateAnswer

    id:
        id:
            type: integer
            generator:
                strategy: AUTO

    manyToOne:
        client:
            targetEntity: Entity\Client
            joinColumn:
                name: id_client
                nullable: false
                referenceColumnName: id

        survey:
            targetEntity: Entity\AbstractSurvey
            joinColumn:
                name: id_survey
                nullable: false
                referenceColumnName: id

и

Entity\AbstractSurveyAnswer:
    type: entity
    table: survey_answers
    inheritanceType: JOINED
    discriminatorColumn:
        name: type_class
        type: string
    discriminatorMap:
        database: SurveyDatabaseAnswer
        client_text: SurveyClientTextAnswer
        client_number: SurveyClientNumberAnswer
        client_date: SurveyClientDateAnswer

    id:
        id:
            type: integer
            generator:
                strategy: AUTO

    manyToOne:
        client:
            targetEntity: Entity\Client
            joinColumn:
                name: id_client
                nullable: false
                referenceColumnName: id

        survey:
            targetEntity: Entity\AbstractSurvey
            joinColumn:
                name: id_survey
                nullable: false
                referenceColumnName: id

и я пытаюсь удалить объект с этим кодом

$to_delete_answer = new SurveyDatabaseAnswer();
$to_delete_answer->setId($answer);
$storage->remove($to_delete_answer);//calls EntityManagger::remove
$storage->flush();

Но я получаю следующее сообщение об ошибке

Detached entity \Entity\\SurveyDatabaseAnswer@00000000204763e700007fdd1d66d304 cannot be removed

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

1 Ответ

0 голосов
/ 29 апреля 2019

Я думаю, что ваша проблема в том, что ваша сущность $ to_delete_answer не "объединена", поэтому ваш EntityManager не может ее обработать.Попробуйте добавить $storage->merge($to_delete_answer); перед удалением вашей сущности:

$to_delete_answer = new SurveyDatabaseAnswer();
$to_delete_answer->setId($answer);
$storage->merge($to_delete_answer);
$storage->remove($to_delete_answer);//calls EntityManagger::remove
$storage->flush();

См .: https://www.doctrine -project.org / projects / doctrine-orm / en / 2.6 / reference / Работа с объектами.html # присоединяемых-объекты

...