Светильники и наследство в симфонии
-
28-09-2019 - |
Вопрос
У меня есть схема базы данных в симфонии, как это:
Persona:
actAs: { Timestampable: ~ }
columns:
primer_nombre: { type: string(255), notnull: true }
segundo_nombre: { type: string(255) }
apellido: { type: string(255), notnull: true }
rut: { type: string(255) }
email: { type: string(255) }
email2: { type: string(255) }
direccion: { type: string(400) }
ciudad: { type: string(255) }
region: { type: string(255) }
pais: { type: string(255) }
telefono: { type: string(255) }
telefono2: { type: string(255) }
fecha_nacimiento: { type: date }
Alumno:
inheritance:
type: concrete
extends: Persona
columns:
comentario: { type: string(255) }
estado_pago: { type: string(255) }
Alumno_Beca:
columns:
persona_id: { type: integer, primary: true }
beca_id: { type: integer, primary: true }
relations:
Alumno: { onDelete: CASCADE, local: persona_id, foreign: id }
Beca: { onDelete: CASCADE, local: beca_id, foreign: id }
Beca:
columns:
nombre: { type: string(255) }
monto: { type: double }
porcentaje: { type: double }
descripcion: { type: string(5000) }
Как видите, «выпускно» имеет конкретное наследование от «Персона». Теперь я пытаюсь создать приспособления для этих двух таблиц, и я не могу сделать доктрину, чтобы загрузить их. Это дает мне эту ошибку:
SQLState [23000]: Нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не удается (
eat/alumno__beca
, Ограничениеalumno__beca_persona_id_alumno_id
ВНЕШНИЙ КЛЮЧ (persona_id
) ИСПОЛЬЗОВАННАЯ ЛИТЕРАТУРАalumno
(id
) На удалении каскада)
Кто-то узнает, как написать крепеж для стола, унаследованной другой?
Спасибо!
Решение
Я не уверен. Регистрация дочерней записи не может «юридически» существовать без его родителей, если вы определили свои отношения таким образом, иначе не удается ограничение.
Другие советы
Я начал Symfony в последние недели, и у меня есть проблемы сегодня с этим ..
Первая проблема в том, что ваши внешние ключи должны быть целыми. Не целое число (3) .. Не следует писать поля полей, если это внешний ключ. А также ваш код правильный, это просто информация.
Вторая проблема в том, что вы должны удалить следующие показатели внешних ключей на таблице базы данных. Если он уже создан, когда вы вставляете SQL снова, он дает ошибку.