5

Doctrine フィクスチャを自分の DB にロードしようと必死です。グローバル 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

DB を見ると、どのテーブルにも何も挿入されていません。最初のフィクスチャ (上記の貼り付けに従ってロードされているようです) のみをロードしようとすると、エラーが発生します。

[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

1

これにも遭遇するだけです。私のフィクスチャは、ローカルの Windows 環境で動作していましたが、Linux の実稼働環境では失敗しました。

私の問題は大文字と小文字の区別でした (windows-linux ではよくあることです)。

データフィクスチャディレクトリに名前を付けました

Datafixtures

スクリプトが探している間

DataFixtures

2 番目のディレクトリ名で大文字の 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 に答える