当我使用时:
php app/console doctrine:fixtures:load --fixtures=/var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM**
我收到以下错误:
PHP Catchable致命错误:参数1传递给 BISSAP \ ForumBundle \ Entity \ Forum :: setCategory()必须是。的实例 BISSAP \ ForumBundle \ Entity \ Category,null给定,调用 /var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM/LoadForum.php 在第40行并在中定义 第184行/var/www/Symfony/src/BISSAP/ForumBundle/Entity/Forum.php
我的夹具 - LoadForum.php:
<?php
namespace BISSAP\ForumBundle\DataFixtures\ORM;
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Common\Persistence\ObjectManager;
use BISSAP\ForumBundle\Entity\Forum;
use BISSAP\ForumBundle\Entity\Category;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
class LoadForum extends Controller implements FixtureInterface
{
public function load(ObjectManager $manager)
{
$data=array(array('NAME','DESCRTIPTION','60',$manager->getRepository('BISSAPForumBundle:Category')->find('1')),
array('NAME2','DESCRTIPTION2','60',$manager->getRepository('BISSAPForumBundle:Category')->find('2')));
foreach ($data as $for) {
$forum = new Forum();
$forum->setName($for[0]);
$forum->setDescription($for[1]);
$forum->setOrdre($for[2]);
$forum->setCategory($for[3]);
$manager->persist($forum);
}
$manager->flush();
}
}
答案 0 :(得分:1)
doctrine:fixtures:load从DB中删除所有数据并加载新的灯具集
我相信你的问题是
$manager->getRepository('BISSAPForumBundle:Category')->find('1')
返回空结果而不是Category对象
看起来您要么在分类之前加载论坛固定装置,要么您认为数据库没有被删除而且您没有任何类别的记录。
对于案例1,您应该更改灯具装载的顺序 - 更改类别灯具的“getOrder”功能,并将返回的号码设置为低于论坛的号码
对于案例2,您还应该为某些类别创建灯具
BTW你应该使用对象的引用,而不是从存储库中提取,所以常见的方法是:
为类别夹具
创建新参考$ category = new \ MyApp \ CategoryBundle \ Entity \ Category();
$类别 - &GT;的setName();
$这 - &GT; addReference( 'MyApp的\ CategoryBundle \实体\类别-1',$类);
调用已创建的引用来填充论坛
$论坛 - &GT; setCategory($这 - &GT; getReference( 'MyApp的\ CategoryBundle \实体\类别-1'));