2015-08-11 3 views
0

Когда я использую:Крепеж DOCTRINE2

php app/console doctrine:fixtures:load --fixtures=/var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM** 

Я получаю следующее сообщение об ошибке:

PHP Catchable fatal error: Argument 1 passed to BISSAP\ForumBundle\Entity\Forum::setCategory() must be an instance of BISSAP\ForumBundle\Entity\Category, null given, called in /var/www/Symfony/src/BISSAP/ForumBundle/DataFixtures/ORM/LoadForum.php on line 40 and defined in /var/www/Symfony/src/BISSAP/ForumBundle/Entity/Forum.php on line 184

фикстуру - 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(); 
    } 
} 

ответ

1

доктрины: светильники: нагрузка стирает все данные из БД и загружает новый комплект светильников

Я считаю, что ваша проблема

$manager->getRepository('BISSAPForumBundle:Category')->find('1') 

, которые возвращают пустой результат вместо Категория объекта

И, похоже, либо вы нагрузка Форум светильников до категории или вы не считали, что DB был стерт, и вы не» t есть записи для категории.

для случая 1, вы должны изменить порядок светильников погрузки - изменить функцию «GetOrder» для категории приборов и возвращаемый набор номер нижнего, то числа на форуме

для случая 2, вы должны также создать светильники для некоторых категорий

BTW вы должны использовать ссылку на объект, вместо того, подбирая из репозитория, так что общий путь:

  1. Создать новую ссылку для категории арматуры

    $ category = new \ MyApp \ CategoryBundle \ Entity \ Category();

    $ category-> setName();

    $ this-> addReference ('MyApp \ CategoryBundle \ Entity \ Category-1', $ category);

  2. вызовов создана ссылка для заполнения Форум

    $ форум-> setCategory ($ this-> getReference ('MyApp \ CategoryBundle \ Entity \ Category-1'));

+0

Спасибо U Evgeniy Kuzmin, теперь все в порядке! – Bissap