Как создать отношение в Doctrine

#php #symfony1 #doctrine #relational-database #symfony-1.4

#php #symfony1 #доктрина #реляционная база данных #symfony-1.4

Вопрос:

я изучаю Symfony и Doctrine с помощью Jobeet. Я хотел бы добавить отношение в JobeetJob. это оригинал:http://www.symfony-project.org/jobeet/1_4/Doctrine/en/03

Мне действительно нравится это:

 JobeetCategory:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true, unique: true }

JobeetCategorya:
  actAs: { Timestampable: ~ }
  columns:
    name: { type: string(255), notnull: true, unique: true }

JobeetJob:
  actAs: { Timestampable: ~ }
  columns:
    category_id:  { type: integer, notnull: true }
    categorya_id:  { type: integer, notnull: true }
    type:         { type: string(255) }
    (...)
    expires_at:   { type: timestamp, notnull: true }
  relations:
    JobeetCategory: { onDelete: CASCADE, local: category_id, foreign: id, foreignAlias: JobeetJobs }
    JobeetCategorya: { onDelete: CASCADE, local: categorya_id, foreign: id, foreignAlias: JobeetJobsa }
  

когда я делаю:

доктрина php symfony:build —all —and-load

у меня ошибка

SQLSTATE [23000]: нарушение ограничения целостности: 1452 Не удается добавить или обновить дочернюю строку: сбой ограничения внешнего ключа ( jobeet . jobeet_job , ССЫЛКИ На jobeet_job_categorya_id_jobeet_categorya_id ВНЕШНИЙ КЛЮЧ ( categorya_id ) ОГРАНИЧЕНИЯ jobeet_categorya ( id ) При КАСКАДНОМ УДАЛЕНИИ)

почему?

Комментарии:

1. Патрик, тебе следует сформулировать свой заголовок в виде вопроса, а поскольку Jobeet — это symfony / doctrine, добавь и это туда. Это помогает другим определить вопрос, на который они, вероятно, смогут ответить. Просто предложение: How to create a relation in Doctrine?

2. Что вы делаете, когда получаете ошибку?

3. я делаю: php symfony doctrine:build —all —and-load

4. Добавьте это в свой вопрос, например: Когда я это делаю doctrine:build --all --and-load , я получаю эту ошибку: (ваше сообщение об ошибке уже есть в вопросе, поэтому поместите его между ними)

5. хорошо 🙂 может знаете решение проблемы?

Ответ №1:

Я думаю, что проблема вызвана --and-load частью этой команды. Эта ошибка часто возникает, когда вы загружаете элементы управления в таблицы в порядке, который нарушил бы их отношения с внешним ключом (т. Е. помещаете дочерние данные перед родительскими данными).

Если это действительно ваша проблема, вы можете найти здесь несколько тем о том, как обойти эту проблему … в основном, просто сначала собирая ( build --all ), а затем загружая приспособления отдельными пакетами, чтобы они учитывали отношения внешнего ключа.