У меня есть объект "Компания", где у каждой компании есть другая материнская компания в иерархической древовидной структуре.
В приложении все работает нормально, поэтому я уверен, что мои классы Entity верны.
Проблема в том, что если в базе данных уже есть контент, то выполнение
doctrine:fixtures:load
дает следующую ошибку:
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails
Я почти уверен, что проблема в том, что load: fixtures нужно усекать таблицу, но это невозможно, не получив этого ошибка.
Я не уверен, как решить эту проблему, не взламывая что-то в Doctrine, чтобы отключить ключевые ограничения перед чисткой. Не совсем долгосрочное решение.
Другие отношения в структуре данных не вызывают проблем, поскольку доктрина, кажется, очищает в правильном порядке, чтобы избежать проблем, но с таблицей Company, ссылающейся на себя, она падает.
Вот моя сущность.
class Company
{
/**
* @var integer $id
*
* @ORM\Id
* @ORM\Column(name="id", type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string $name
* @ORM\Column(type="string", length=100)
*/
protected $name;
/**
* @ORM\ManyToOne(targetEntity="Company", inversedBy="children")
* @ORM\JoinColumn(name="parent_id", referencedColumnName="id")
*/
protected $parent;
/* other properties here..... */
}
Я использую Symfony 2.0.7 и последние deps, а также MySQL 5.5