无法在Symfony2中加载灯具“无法找到任何灯具加载”

时间:2012-10-16 20:42:41

标签: php symfony doctrine osx-mountain-lion fixtures

我拼命地尝试将Doctrine灯具加载到我的数据库中。 当我调用全局cli加载函数时,开头没什么好看的:

> purging database
> loading [1] namespace_of_my_first_fixture_file
> loading [2] namespace_of_my_second_fixture_file
...

但是当它试图重新使用先前加载的灯具中的对象(错误的索引)时,它在进程的中间失败:

[ErrorException]                                                                                                                                                          
Notice: Undefined index: my_object_index in /Users/Swop/project/vendor/doctrine/data-fixtures/lib/Doctrine/Common/DataFixtures/ReferenceRepository.php line 145

我查看数据库,并且在任何表中都没有插入任何内容。如果我尝试只加载第一个夹具(似乎根据上面的粘贴加载),我有一个错误:

[InvalidArgumentException]                                          
Could not find any fixtures to load in:                             

- src/MyOrg/MyBundleBundle/DataFixtures/ORM/MyFirstFixtureFileData.php

顺便说一句,我只是在我的MacOS X(Mountain Lion)上使用自编译的PHP 5.4实例运行它。

灯具数据加载在我的Linux机箱上运行良好。

4 个答案:

答案 0 :(得分:3)

我在文档中找不到一个好的例子,最后发现这个有效。只需使用文件夹位置,不要指定灯具文件。

doctrine:fixtures:load --fixtures=src/MyOrg/MyBundleBundle/DataFixtures/ORM --append

答案 1 :(得分:1)

看看DoctrineFixturesBundle documentation

您的数据夹具类需要实现OrderedFixtureInterface,以便按预先设定的顺序加载它们。

然后,您可以使用$this->addReference('ref-name', $variable)设置引用,并使用$this->getReference('ref-name')引用其他灯具中的引用。

我猜测为什么它似乎在你的linux盒子上运行是因为修复程序以不同的顺序加载。

答案 2 :(得分:1)

请碰到这个。我的工具在我的本地Windows环境中运行,但在我的linux生产环境中失败了。

我的问题是区分大小写(因为它经常出现在windows-linux中)。

我将数据夹具目录命名为

Datafixtures

脚本寻找

DataFixtures
  

在第二个目录名中找到大写字母F,我没有; - )

我希望这能节省时间。

答案 3 :(得分:1)

升级doctrine / doctrine-fixtures-bundle

时遇到了同样的问题

这帮助了我:

  

自动加载目录中的灯具(例如   AppBundle \ DataFixtures \ ORM)已删除。相反,注册你的   fixture类作为服务,然后用doctrine.fixture.orm标记。

来源:https://github.com/doctrine/DoctrineFixturesBundle/blob/master/UPGRADE.md