2013-11-12 4 views
-2

Я делаю светильники, и когда я пытаюсь загрузить их, у меня есть ошибка. Отношения между премией и фильмом являются однонаправленными, поэтому я загружаю первую премию, потому что у нее нет ссылок. Ошибка говорит:[Symfony Component Debug Exception ContextErrorException]

[Symfony\Component\Debug\Exception\ContextErrorException] Warning: spl_object_hash() 
expects parameter 1 to be object, array given in 
/Users/benatespina/Development/filmboot.web/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM‌/MongoDB/UnitOfWork.php line 1706. 

Это мой Крепеж класс:

namespace MyProject\MovieBundle\DataFixtures\MongoDB; 

use Doctrine\Common\DataFixtures\AbstractFixture; 
use Doctrine\Common\DataFixtures\OrderedFixtureInterface; 
use Doctrine\Common\Persistence\ObjectManager; 

use MyProject\MovieBundle\Document\Award; 

class Awards extends AbstractFixture implements OrderedFixtureInterface { 
    public function load(ObjectManager $manager) { 
     $awards = array(
      array(
       "name"  => "Sitges", 
       "year"  => "1992", 
       "category" => "Best director" 
     ); 

     foreach ($awards as $i => $award) { 
      $document = new Award(); 
      $document->setName ($award["name"]); 
      $document->setYear ($award["year"]); 
      $document->setCategory($award["category"]); 

      $manager->persist($document); 
      $this->addReference("award-" . $i, $award); 
     } 

     $manager->flush(); 
    } 

    public function getOrder() { 
     return 1; 
    } 
} 
+1

Вы используете $ i в $ this-> addReference ("award-". $ I, $ award); но вы нигде не определяете его. –

+0

Это потому, что вы используете foreach вместо цикла for, вам либо нужно изменить свой цикл, либо вам нужно добавить $ i, который вы обновите самостоятельно. – Sammaye

ответ

2

Это исключение не имеет ничего общего с Symfony2 или доктриной-светильники - это общий PHP исключение.

Вы пытаетесь использовать переменную $i, которая никогда не была определена в вашем вызове addReference().

$this->addReference("award-" .$i, $award); 
+0

Я отредактировал свой код, и теперь у меня есть следующая ошибка: [Symfony \ Component \ Debug \ Exception \ ContextErrorException] Предупреждение: spl_object_hash() ожидает, что параметр 1 будет объектом, массив указан в/Users/b enatespina/Development/filmboot.web/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/Mon goDB/UnitOfWork.php line 1706 – xaaleja

+3

вы не должны редактировать такие вопросы ... я ответил на ваш вопрос, но теперь этот ответ бесполезен и больше не может служить кому-либо другому. Просто откройте новый вопрос в следующий раз, пожалуйста. – nifr

Смежные вопросы