幾個月的工作之後,突然向我當我嘗試從終端運行命令得到這個錯誤。 「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丟失。我在這裏完全喪失了什麼是遺漏或不正確的。有人有任何建議嗎?值得一提的是,該網站的前端工作正常,它使用了用戶實體。
你嘗試到指定'config.yml'手動映射位置+型(註釋)?的配置關鍵是'doctrine.orm.entity_managers <經理名稱> .mapping' - 見[參考配置](http://symfony.com/doc/current/reference/configuration/doctrine.html)。 **仔細檢查**您的名稱空間,並清除緩存。請事後報告:) – nifr