【问题标题】:Impossible to load fixtures in Symfony2 "Could not find any fixtures to load"无法在 Symfony2 中加载固定装置“找不到要加载的固定装置”
【发布时间】:2012-10-07 01:09:06
【问题描述】:

我拼命尝试将 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 实例运行它。

fixtures 数据加载在我的 Linux 机器上运行良好。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      看看DoctrineFixturesBundle documentation

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

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

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

      【讨论】:

        【解决方案3】:

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

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

        我命名了数据夹具目录

        Datafixtures
        

        当脚本寻找时

        DataFixtures
        

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

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

        【讨论】:

          【解决方案4】:

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

          这对我有帮助:

          在目录中自动加载固定装置(例如 AppBundle\DataFixtures\ORM) 被移除。相反,注册您的 固定类作为服务和标记然后用教义.fixture.orm。

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多