2012-10-16 4 views
3

Doctrine 조명기를 내 DB에 필사적으로로드하려고합니다. 나는 세계 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 

나는 DB를보고 어떤 테이블에도 아무것도 삽입하지 않았다. 나는 첫 번째 고정을 (위 붙여 넣기에 따라로드 할 보인다)을로드하려고하면, 나는 오류가있어 : 그런데

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

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

을, 난 그냥 (내 맥 OS X에서 산 것을 실행 Lion)에서 자체 컴파일 된 PHP 5.4 인스턴스를 사용합니다.

설비 데이터 로딩은 내 리눅스 박스에서 잘 작동합니다.

답변

1

DoctrineFixturesBundle documentation을 살펴보십시오.

데이터 고정 장치 클래스는 OrderedFixtureInterface을 구현해야 사전 설정 순서로로드됩니다.

그런 다음 $this->addReference('ref-name', $variable)으로 참조를 설정하고 $this->getReference('ref-name')으로 다른 참조에서 참조 할 수 있습니다.

필자의 추측에 따르면 리눅스 박스에서 작동하는 것처럼 보이는 이유는 픽스처가 다른 순서로로드 되었기 때문입니다.

2

문서에서 좋은 예를 찾을 수 없어서 결국 작동하는 것으로 나타났습니다. 그냥 폴더 위치를 사용하고 조명기 파일을 지정하지 마십시오.

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

그냥 실행하십시오. 내 비품은 내 로컬 Windows 환경에서 작동하지만 내 리눅스 프로덕션 환경에서는 실패했습니다.

제 문제는 대소 문자를 구분하는 문제였습니다 (Windows-Linux에서 자주 발생). 스크립트 내가이 누군가의 시간을 절약 할 희망

DataFixtures 

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

를 검색하는 동안

나는 데이터 비품 디렉토리를

Datafixtures 

을 지명했다.

관련 문제