У меня есть компания Company, в которой каждая компания имеет другую материнскую компанию в иерархической древовидной структуре.
В приложении все отлично работает, поэтому я уверен, что мои классы сущностей верны.
Проблема в том, что если в базе данных уже есть контент, то нужно сделать
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