警告:spl_object_hash()期望参数1为object,给定数组

时间:2013-11-13 09:41:38

标签: mongodb symfony doctrine-orm fixtures doctrine-odm

我正在制作灯具,当我尝试加载灯具时出现错误。奖和电影之间的关系是单向的,所以我加载了第一个奖,因为它没有任何参考。错误说:

[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.

这是我的Fixture类:

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 个答案:

答案 0 :(得分:1)

问题在于:

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

您不能将数组作为rererence传递。你可能想要这个:

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