У меня есть Файловая модель и несколько (в настоящее время 3) различных других моделей (Статья, Работа, Событие), которые могут иметь файлы, которые хранятся в Файловой модели.
Проблема в том, что когда я генерирую таблицы с помощью CLI-Tool (./doctrine 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-код, который генерирует Doctrine (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'));
}
Я понимаю , почему это происходит (Ограничения не могут быть установлены для нескольких таблиц), но я понятия не имею, как я могу решить эту проблему без нескольких файловых таблиц или таблицы ассоциаций.
Есть ли способ сказать Доктрине, что она не должна создавать отношения в модели Файла?
Есть хорошие идеи?