2013-08-02 5 views
1

Doctrine과 함께 Symfony2를 사용하여 테이블 스키마를 업데이트하고 있습니다. 테이블을 만들 수있었습니다. 테이블을 채울 수있었습니다. 그러나 Entity에서 주석을 업데이트 한 후에 (일부 필드가 null 가능하게되기를 원했음) 이러한 변경 사항이 선택되지 않았습니다."Doctrine"을 업데이트하지 않습니다.

"주석"옵션을 선택한 엔티티를 만들었습니다. 하지만이 줄을 "nullable = true"를 imageName 필드의 엔터티에 추가하면 아무 일도 일어나지 않습니다. 즉 : "./app/console doctrine : schema : update"를 실행하면 다음 출력을 얻습니다. "업데이트 할 것이 없습니다 - 데이터베이스가 이미 현재 엔터티 메타 데이터와 동기화되어 있습니다."

참고 : ./app/console doctrine : database : drop --force를 통해 테이블을 삭제하고 다음을 통해 다시 만들려고했습니다. ./app/console doctrine : database : create 그리고 ./app/ console doctrine : schema : create하지만 여전히 업데이트 된 nullable 필드를 imageName에 추가하지 않습니다.

+0

원래 doctrine : mapping : convert를 실행 했습니까? 그렇다면 schema : update 명령이 주석을 사용하기 전에 생성 된 xml/yml 파일을 삭제해야합니다. – Cerad

+0

@Cerad,이 파일들은 어디에 있습니까? app/cache 아래를 보았지만 아무 것도 찾지 못했습니다. –

답변

2

나는 이것을 알아낼 수 있었다. 먼저 구성 형식으로 yml을 사용하여 "Foobar"라는 엔티티를 만들었습니다. 그런 다음 구성 형식으로 "주석"을 사용하여 Entity 폴더를 수동으로 삭제 (한 테이블 만 만들었습니다)하지만 Resources/config/doctrine/Foobar.orm.yml에서 구성 yml을 삭제하지 않았습니다.

따라서 엔티티를 다시 만들었습니다. 이번에는 구성 형식으로 주석을 사용했지만 yml 구성에 여전히 연결되어있었습니다. 제거로 모든 문제를 해결했습니다.

그러나 나는 주석에서 발견 된 Doctrine Metadata보다 읽기가 조금 더 쉽다고 생각하여 yml을 고수하기로 결정했습니다.

1

나는 이걸로 거의 이틀 동안 붙어 있었어./src/AppBundle/Resources/config/doctrine에있는 모든 파일을 제거하면 내 문제가 해결됩니다.

0

나를 위해 핵심은 Redis 캐시를 지우는 것이 었습니다.

php app/console redis:flushdb 
0

이 문제가 너무 있습니다. 클래스 선언 전에 올바른 주석을 사용 했습니까?

/** 
* 
* @ORM\Entity <- this does the trick 
*/ 
class MyEntityName 
{ 
... 
관련 문제