无法生成表“用户”

时间:2012-08-27 15:52:22

标签: php symfony symfony-2.1 fosuserbundle

当我安装 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

你能帮助我吗?

5 个答案:

答案 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

再次一切都有效。