Я пытаюсь внести новые данные в эти таблицы (используя наследование):
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\SurveyDatabaseAnswer:
type: entity
table: survey_database_answers
indexes:
id:
columns: [id, id_answer]
manyToOne:
answer:
targetEntity: Entity\Answer
joinColumn:
name: id_answer
nullable: false
referenceColumnName: id
Я обновляю таблицы таким образом, и это работает (имеетнекоторый опущенный код и некоторые функции доктрины, такие как flush, инкапсулированы в другие классы)
$updated_answer = new SurveyDatabaseAnswer();
$updated_answer->setId($result[0]);
$updated_answer->setClient($client);
$updated_answer->setSurvey($survey);
$updated_answer->setAnswer($answer);
$storage->merge($updated_answer);
$storage->flush();
, но если я пытаюсь вставить новую строку
$updated_answer = new SurveyDatabaseAnswer();
$updated_answer->setClient($client);
$updated_answer->setSurvey($survey);
$updated_answer->setAnswer($answer);
$storage->persist($updated_answer);
$storage->flush();
Я получаю эту ошибку, доктрина пытаетсявставить и существующий идентификатор
Type: Doctrine\DBAL\Exception\UniqueConstraintViolationException
Message: An exception occurred while executing 'INSERT INTO survey_database_answers (id, id_answer) VALUES (?, ?)' with params [7438572, 1888]: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '7438572' for key 'PRIMARY'
Я что-то не так делаю в доктрине?