2014-01-10 31 views
0

幾個月的工作之後,突然向我當我嘗試從終端運行命令得到這個錯誤。 「X」是一個用戶實體,擴展了FOSUserBundle。的Symfony2 - 類X是不是有效的實體或映射超類

來看一些關於這裏的類似的問題,常見的錯誤似乎是不正確的註釋,不登記在AppKernel捆綁,或者沒有在配置啓用auto_mapping。

用戶上課(我不認爲性是必要的?)是這樣的:

<?php 

namespace Acme\UserBundle\Entity; 

use FOS\UserBundle\Entity\User as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 
use Doctrine\Common\Collections\ArrayCollection; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Table() 
*/ 
class User extends BaseUser 
{ 
    // ... 
} 

束在AppKernel註冊:

$bundles = array(
     // ... 
     new Acme\UserBundle\UserBundle(), 
     // ... 
); 
啓用

自動映射(並且不會在_prod或_dev配置中禁用),如下所示:

doctrine: 
    dbal: 
     driver: %database_driver% 
     host:  %database_host% 
     port:  %database_port% 
     dbname: %database_name% 
     user:  %database_user% 
     password: %database_password% 
     charset: UTF8 
    orm: 
     auto_generate_proxy_classes: %kernel.debug% 
     auto_mapping: true 

P1我們FOSUserBundle被告知正確的實體使用:

fos_user: 
    db_driver: orm 
    firewall_name: main 
    user_class: Acme\UserBundle\Entity\User 

不起作用?

我偶然發現在這裏一個問題,它被禁用eAccelerator在解決。我們確實有在服務器上運行eAccelerator在,但清除緩存後,我在phpinfo()函數輸出驗證本地值被禁止運行命令時,如已經預期:

eaccelerator.enable => 0 => 1 
eaccelerator.optimizer => 0 => 1 

當我運行doctrine:mapping:info命令我可以看到我的UserBundle丟失。我在這裏完全喪失了什麼是遺漏或不正確的。有人有任何建議嗎?值得一提的是,該網站的前端工作正常,它使用了用戶實體。

+0

你嘗試到指定'config.yml'手動映射位置+型(註釋)?的配置關鍵是'doctrine.orm.entity_managers <經理名稱> .mapping' - 見[參考配置](http://symfony.com/doc/current/reference/configuration/doctrine.html)。 **仔細檢查**您的名稱空間,並清除緩存。請事後報告:) – nifr

回答

0

我得到了這個問題,這是一個沉睡的錯誤刪除與整個@Entity線EntityRepository,造成「不是一個有效的實體」的錯誤。

我花了很多搜索FOSUserBundle:User超類地圖的問題,但問題出在我的課上,我不得不知道,當它沒有出現在doctrine:mapping:info

相關問題