2009-12-06 3 views
0
내 프로젝트에서 ORM으로 교리를 사용하지만 이상한 오류에 대해 실행하고있어

: 다음왜라는 교리 모델을 만들 수 없습니다 '앨범'

Album: 
    tableName: dpp_album 
    actAs: [Timestampable] 
    columns: 
    name: string(255) 
    description: string(255) 
    online: boolean 

내가 : YAML 다음

사용 내 모델을 생성하지만 내 페이지를 새로 고침하고 모델을 자동 로딩시, PHP는이 오류를 제공합니다 :

Fatal error: Class 'BaseAlbum' not found in E:\sites\dpp\system\application\models\Album.php on line 13

이상하게도 내 모든 다른 모델은 잘하고 기본 클래스는 이러한 경우에서 발견된다.

'앨범'이름을 '설정'과 같은 것으로 변경하면 그냥 작동합니다! 이상하지 않니?!

그래서 '앨범'을 사용하는 것처럼 보이지만 오류 메시지가 다른 것을 제안합니다. 복수형 앨범으로의 변경도 작동하지 않습니다.

제안 사항?

감사합니다.

+0

'앨범'은 귀하의 설명에 따라 해당 ORM에 대한 예약 키워드라고 생각합니다. 아마도이 방법을 사용하여 구분 기호를 사용하여이 문제를 피할 수 있습니다. –

+0

그래도 이상한 생각이 들더라도 그렇게 생각했습니다! 그러나 문서와 소스 코드를 검색 할 때 '앨범'이라는 것을 찾을 수 없었습니다 ... :-( –

+0

http://www.google.com/codesearch?q=lang%3Aphp+doctrine+Album&hl=en&btnG=Search+Code Google 코드는 앨범 클래스도 사용합니다. – Cups

답변

2

는 옵션 generateBaseClasses이 설정되어있는 경우 (기본값) generateModelsFromYaml() 귀하의 경우와 빈 클래스 Album extends AlbumBase (하위 디렉토리 generated에 기본적으로) 클래스 AlbumBase를 작성합니다. 나는. Album이 인스턴스화 된 경우 AlbumBase은 이미 알고 있거나 일부 오토로더에 의해로드되어 있어야합니다.

+0

idd, 이제 막 알아 냈습니다! 어쨌든 고마워요! –

5

문제는 모델 클래스의 자동 로딩 순서에 있습니다.

생성 된 'Base'모델은 'models/generated'디렉토리 아래에 있고 다른 하나는 위 디렉토리에 있습니다.

로딩 순서를 보장 할 수 없기 때문에 모델이 확장되어이 오류가 발생하기 전에 모델이로드되는 경우가 있습니다.

Doctrine::loadModels(array(APPPATH.'/models/generated', APPPATH.'/models')); 

이 문서는 생성 된 파일의 결과 예를 많이 사용하지만에 대해 이야기 할 때이 문제를 언급하지 않습니다 내 부트 스트랩 파일에서

은, 지금은 명시 적으로 다음과 같은 디렉토리의 로딩 순서를 포함했다 부트 스트랩 구성.

어쨌든이 문제가 해결되었습니다. :-)

관련 문제