5

我拼命尝试将 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

4 回答 4

4

I could not find a good example in the docs and finally found that this works. Just use the folder location and do not specify the fixture file.

doctrine:fixtures:load --fixtures=src/MyOrg/MyBundleBundle/DataFixtures/ORM --append
于 2014-02-20T20:35:00.847 回答
1

也碰到这个。我的固定装置在我的本地 Windows 环境中工作,但在我的 linux 生产环境中失败。

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

我命名了数据夹具目录

Datafixtures

当脚本寻找

DataFixtures

在第二个目录名称中发现大写 F,我没有;-)

我希望这可以节省一些人的时间。

于 2015-04-15T11:24:56.177 回答
1

查看DoctrineFixturesBundle 文档

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

然后,您可以使用 设置引用$this->addReference('ref-name', $variable)并在另一个夹具中使用$this->getReference('ref-name').

我猜测为什么它似乎可以在您的 linux 机器上运行是因为这些修复程序是以不同的顺序加载的。

于 2012-12-11T12:28:08.913 回答
1

升级学说/教义固定装置捆绑包时遇到了同样的问题

这帮助了我:

删除了目录(例如 AppBundle\DataFixtures\ORM)中固定装置的自动加载。相反,将您的fixture 类注册为服务,然后使用doctrine.fixture.orm 进行标记。

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

于 2018-01-24T08:53:13.677 回答