2012-10-16 55 views
3

我拼命尝试将Doctrine灯具加载到我的数据库中。 当我所说的全球CLI加载功能,没有什么很糟糕的开头:无法加载Symfony2中的灯具“找不到任何灯具加载”

> 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(山Lion)与一个自编译的PHP 5.4实例。

Fixtures数据加载在我的Linux机器上工作得很好。

回答

1

看看DoctrineFixturesBundle documentation

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

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

我的猜测,为什么它似乎在你的linux系统上工作,是因为这些固件是以不同的顺序加载的。

2

我无法在文档中找到一个很好的示例,并最终发现它可行。只需使用文件夹位置,不要指定夹具文件。

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

只是碰到这个。我的设备在我的本地Windows环境中工作,但在我的Linux生产环境中失败。

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

我命名的数据fixtures目录

Datafixtures 

当脚本查找

DataFixtures 

Spot the capital F in the second directory name, I didnt ;-)

我希望这可以节省时间某人。