【问题标题】:Why can't load data these fixtures in Symfony2 project?为什么无法在 Symfony2 项目中加载这些设备的数据?
【发布时间】:2011-12-31 15:02:40
【问题描述】:

我在包的 DataFixtures/ORM 文件夹中创建了一个固定器类。实际的类如下所示:

use Doctrine\Common\DataFixtures\FixtureInterface,
    Company\ShoppingBundle\Entity\Category;

class CategoryFixtures implements FixtureInterface
{
    public function load($em)
    {
        $category1 = new Category()->setName("category1");
        $category2 = new Category()->setName("category2");
        $em->persist($category1);
        $em->persist($category2);
        $em->flush();
    }
}

我没有使用 AbstractFixture 基类,因为我不需要引用。我还尝试在运行教义:fixtures:load 控制台命令时指定固定装置路径。我正在关注官方文档here。

【问题讨论】:

  • 您遇到的错误是什么导致您无法加载夹具?极端的猜测是因为你已经完成了$category1 = new Category()->setName("category1");,所以除非函数setName返回Category(很可能$this让你的代码有意义)$category1将被分配给null,然后你尝试持久化 null 并刷新它。
  • 您对 setter 返回的错误假设是正确的。此后,我更改了代码以在首先创建对象后调用 setter。但这并不能帮助我解决主要问题。我看到的错误类似于:[InvalidArgumentException] 找不到要加载的任何固定装置:后跟其查找的文件夹列表(该列表包括我的固定装置类所在的文件夹:-)
  • 在您上面的代码粘贴中,您在夹具类上没有命名空间,这只是您的问题中的一个遗漏吗?如果没有尝试将其添加到namespace Acme\WhateverBundle\DataFixtures\ORM;
  • 另外,确保捆绑包在您的AppKernel.php中初始化
  • 是的,我确实有一个命名空间,但在复制和粘贴该代码时错过了它。是的,捆绑包也在 AppKernel 中初始化。今天奇怪的事情:我更新到 Symfony 2.0.5,然后重试了我的负载,它成功了!也许我必须清除缓存(我以为我已经这样做了)。还切换到使用 AbstractFixture 类和 OrderedFixtureInterface。希望我知道是什么“修复”了它:-)

标签: symfony doctrine-orm loading fixtures


【解决方案1】:

文件命名没有问题,或者我的配置:我只是忘了放

<?php

在我的文件顶部:-D

【讨论】:

    猜你喜欢
    • 2011-02-16
    • 2013-05-19
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-04-05
    • 1970-01-01
    • 1970-01-01
    • 2011-07-09
    相关资源
    最近更新 更多