Как создать отношения в Доктрине - PullRequest
0 голосов
/ 12 июня 2011

Я изучаю Symfony и Doctrine вместе с Jobeet. Я хотел бы добавить отношения в JobeetJob. это оригинально: http://www.symfony -project.org / Jobeet / 1_4 / Doctrine / ен / 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 -й нагрузки

у меня ошибка

SQLSTATE [23000]: нарушение ограничения целостности: 1452 Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (jobeet. jobeet_job, CONSTRAINT jobeet_job_categorya_id_jobeet_categorya_id FOREIGN KEY (categorya_id) ССЫЛКИ jobeet_categorya (id) НА УДАЛЕННОМ КАСКАДЕ)

почему

1 Ответ

1 голос
/ 13 июня 2011

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

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

...