当我安装 FOSUserBundle (official documentation)时,我尝试使用此命令生成我的表fos_user
:
php app/console doctrine:schema:update --force
但是控制台会返回以下消息
无需更新 - 您的数据库已与当前实体元数据同步
我使用Symfony 2.1和FOSUserBundle的最后一个版本。
app / AppKernel.php 包含
new FOS\UserBundle\FOSUserBundle(),
app / config / config.yml 包含
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: Krpano\UserBundle\Entity\User
src / Krpano / UserBundle / Entity / User.php 包含
namespace Krpano\UserBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="pouet")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
当我尝试访问我的网站时出现此错误:
MappingException:在链配置的命名空间中找不到类'Krpano \ UserBundle \ Entity \ User'FOS \ UserBundle \ Entity,Krpano \ ServicesBundle \ Entity
你能帮助我吗?
答案 0 :(得分:4)
无需更新 - 您的数据库已与当前实体元数据同步
意味着由于AppKernel.php中缺少声明,您的实体未被注册。
Doctrine仅搜索活跃的捆绑包。
添加以下行:
new Krpano\UserBundle\KrpanoUserBundle(),
就像那样:
public function registerBundles()
{
$bundles = array(
...
new Krpano\UserBundle\KrpanoUserBundle(),
new FOS\UserBundle\FOSUserBundle(),
...
); ...
试试这个:
php app/console doctrine:schema:update --force
如果学说回归:
Database schema updated successfully! "1" queries were executed
你的问题已解决。
我的回答只是Carlos Granados答案的完成。
答案 1 :(得分:3)
添加
new Krpano\UserBundle\KrpanoUserBundle(),
到你的app / AppKernel.php文件
答案 2 :(得分:1)
我遇到此错误,这是因为我的实体类意外删除了@ORM\Entity()
行。 D'哦。
答案 3 :(得分:1)
我和你一样有同样的问题。您错过了为Doctrine Entity创建yml。 Doctrine需要此文件才能在数据库中生成shema。
# src/Acme/UserBundle/Resources/config/doctrine/User.orm.yml
Acme\UserBundle\Entity\User:
type: entity
table: fos_user
id:
id:
type: integer
generator:
strategy: AUTO
然后在控制台更新autoload for composer
composer dump-autoload
然后调用Doctrine架构构建器
php app/console doctrine:schema:update --force
答案 4 :(得分:0)
使用composer.phar dump-autoload --optimize
运行时也会引发此错误:
php app/console cache:clear --env=prod --no-debug
如果你跑:
./composer.phar update
再次一切都有效。