У меня есть Модель Файлов и Несколько (в настоящее время 3) различные другие Модели (Статья, Задание, Событие), который может все иметь файлы, которые хранятся в Модели Файлов.
Проблема состоит в том, что, когда я генерирую таблицы через Инструмент CLI (./доктрина build-all-reload), я получаю это сообщение об ошибке:
SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot
add or update a child row: a foreign key constraint fails
(`my_database/articles`, CONSTRAINT `articles_id_files_target_id`
FOREIGN KEY (`id`) REFERENCES `files` (`target_id`))
Файл определяется как (Никакие отношения не определяются в этой определенной Модели):
columns:
id:
primary: true
autoincrement: true
type: integer(4)
target_id: integer(4)
filename: string(255)
[...]
Все 4 Модели имеют это определение отношения:
relations:
Files:
type: many
class: File
local: id
foreign: target_id
Это - Php-код, который Доктрина генерирует (BaseFile.php):
public function setUp()
{
parent::setUp();
$this->hasOne('Publication', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Event', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Article', array(
'local' => 'target_id',
'foreign' => 'id'));
$this->hasOne('Job', array(
'local' => 'target_id',
'foreign' => 'id'));
}
Я понимаю, почему это происходит (Ограничения не могут быть установкой для нескольких таблиц), но понятия не имейте, как я мог решить эту проблему без mutltiple таблиц файлов или таблицы ассоциации.
Существует ли способ сказать Доктрине, что он не должен создавать отношения в модели File?
Какие-либо хорошие идеи?