私は、各社が階層ツリー構造の別の親会社を持っている会社エンティティを持っています。外国語のキー制約のため、Symfony2のDoctrineFixturesBundleは什器をロードできません
すべてがアプリケーションで正常に動作するため、エンティティクラスが正しいと確信しています。
問題は、コンテンツは、データベースにすでに存在する場合
doctrine:fixtures:load
を行うことは、このエラーを与え、次のとおりです。備品切り捨てることがあります。問題は、負荷があることである
[PDOException]
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails
イムかなり確認してくださいこのエラーは発生しません。
パージの前にキー制約を無効にするためにDoctrineに何かをハッキングすることなくこれを解決する方法がわかりません。長期的な解決策ではありません。
データ構造内の他の関係は、問題を引き起こすことはありません。なぜなら、問題を回避するために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
私は別のエラーメッセージがありました:* [...] * \ Entity \ [...] *のクエリで識別子[...]が見つかりません。この答えは解決策でしたが、3年後(Symfony 2.3.25で)まだ有効です。ありがとう! –