2015-11-12 148 views
1

我遇到了教條映射超類的問題。 當我執行symfony的命令:學說映射不能正常工作

php app/console doctrine:mapping:info

我收到此異常消息:

 
[Doctrine\Common\Persistence\Mapping\MappingException] 
Class 'DBiagi\EitaBundle\Entity\BaseFoo' does not exist 

奇怪的部分是,BaseFoo類不是在實體的文件夾,該類是一個映射超。 這裏是我的文件:

<?php  
# src/DBiagi/EitaBundle/Model/BaseFoo.php 

namespace DBiagi\EitaBundle\Model; 

/** 
* Description of BaseFoo 
* 
*/ 
abstract class BaseFoo implements BaseFooInterface{ 

    private $id; 
    private $name; 

    public function getId(){ 
     return $this->id; 
    } 

    public function getName(){ 
     return $this->name; 
    } 
} 

映射定義:

# src/DBiagi/EitaBundle/Resources/doctrine/BaseFoo.orm.yml 
DBiagi\EitaBundle\Model\BaseFoo: 
    type: mappedSuperclass 
    fields: 
     id: 
      id: 
       type: integer 
       id: true 
       generator: 
        strategy: AUTO 
     name: 
      type: string 
      length: 255 

注意的是,類DBiagi \ EitaBundle \實體\ BaseFoo事實上並不存在,並且BaseFoo類生活在模型文件夾,所以問題是:爲什麼教條正試圖加載這個類?我不能讓我的實體映射,因爲這個例外。 幫助將非常感激。謝謝。

回答

1

您應該在主應用程序配置中爲您的包的實體設置正確的命名空間。假設你使用yml配置,像這樣:

orm: 
    entity_managers: 
     default: 
      mappings: 
       DBiagiEitaBundle: 
        prefix: DBiagi\EitaBundle\Model 
+0

感謝指向正確的方向。在[symfony文檔](http://symfony.com/doc/current/reference/configuration/doctrine.html)的doctrine部分中,有一個教程展示瞭如何更改默認實體文件夾。這解決了我的問題。謝謝。 – dbiagi