2012-02-27 19 views
2

私はSymfony2プロジェクトのフィクスチャで数時間苦労しました。ここで私が得るエラーは次のとおりです。参照がロードされていないSymfony2フィクスチャー(制約違反)

SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails (`wpanel_dev`.`sshuser`, CONSTRAINT `FK_612DE3EE18F45C82` FOREIGN KEY (`website_id`) REFERENCES `Website` (`id`)) 

は答えをたくさん読んでたので、私は成功せず、この方法を試してみました:

php app/console doctrine:database:drop --force 
php app/console doctrine:database:create 
php app/console doctrine:schema:update --force 
php app/console doctrine:fixtures:load (with or without --append) 

ここで($新規作成>エラーを生成している治具のコードがありますsetWebsite(の$ this - > getReference( 'ウェブサイト - ' $ I)。);)

<?php 
namespace WPanel\AdminBundle\DataFixtures\ORM; 

use Doctrine\Common\DataFixtures\FixtureInterface; 
use WPanel\AdminBundle\Entity\SSHUser; 
use Doctrine\Common\Persistence\ObjectManager; 
use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 

class LoadSSHUserData extends AbstractFixture implements OrderedFixtureInterface 
{ 
    public function getOrder() 
    { 
     return 5; 
    } 

    public function load(ObjectManager $manager) 
    { 

     for($i = 1; $i <= 20; $i++) { 
      $new = new SSHUser(); 
      $new->setUser('sshuser'.$i); 
      $new->setPassword('sshuser'.$i); 
      $new->setPath('/var/www/website'.$i.'.com'); 
      $new->setWebsite($this->getReference('website-'.$i)); 

      $manager->persist($new); 
     } 

     $manager->flush(); 
    } 
} 
?> 

私は参照がOKであることを確認しています。私は他のクラスでadd/getReferenceを問題なく使用しています。

ありがとうございました!

答えて

0

このエラーは、正しく理解していれば、そのIDのウェブサイトテーブルにレコードが存在しないことを意味します。

ご注文の際に問題が発生しているか、または参照が間違っています。

0

0から20までの$iカウンタを使用しているため、20個のウェブサイトオブジェクトフィクスチャがないようです。

関連する問題