0

我刚刚在 Symfony 2.3.3 版应用程序中安装了 FosUserBundle。我能够管理用户、登录、注册和诸如此类,但是当我运行 app/console 学说时,我对 MyApp\UserBundle\Entity 中的用户类所做的更改没有被应用:schema:update

数据库结构包含:id、username、username_canonical、email、email_canonical、enabled、salt、password、last_login、locked、expired、expires_at、confirmation_token、password_requested_at、roles、credentials_expired、credentials_expire_at

无论我做什么,我添加的字段 rate 都不会在数据库结构中创建。

在 /app/AppKernel.php 里面

        new MyApp\UserBundle\MyAppUserBundle(),
        new FOS\UserBundle\FOSUserBundle(),

在 /app/config/config.yml 里面

fos_user:
    db_driver: orm
    firewall_name: main
    user_class: MyApp\UserBundle\Entity\User
    registration:
        confirmation:
            enabled:    true

在 /src/MyApp/UserBundle/Entity/User.php 里面

<?php

namespace MyApp\UserBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * User
 *
 * @ORM\Table(name="fos_user")
 * @ORM\Entity(repositoryClass="MyApp\UserBundle\Entity\UserRepository")
 */
class User extends BaseUser
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(name="token", type="string", length=255)
     */
    private $token;

    /**
     * @var integer
     *
     * @ORM\Column(name="rate", type="integer")
     */
    private $rate;


    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set token
     *
     * @param string $token
     * @return User
     */
    public function setToken($token)
    {
        $this->token = $token;

        return $this;
    }

    /**
     * Get token
     *
     * @return string 
     */
    public function getToken()
    {
        return $this->token;
    }

    /**
     * Set rate
     *
     * @param integer $rate
     * @return User
     */
    public function setRate($rate)
    {
        $this->rate = $rate;

        return $this;
    }

    /**
     * Get rate
     *
     * @return integer 
     */
    public function getRate()
    {
        return $this->rate;
    }
}
4

2 回答 2

0

需要将 MyUserBundle 映射添加到您的 config.yml 文件中:

doctrine: 
    orm:
           mappings:
                FOSUserBundle: ~
                MyUserBundle: ~
于 2013-08-16T13:45:07.163 回答
0

不要忘记构造函数,清除缓存并尝试php app/console doctrine:schema:update --force

命名空间 Acme\UserBundle\Entity;

使用 FOS\UserBundle\Model\User 作为 BaseUser;使用 Doctrine\ORM\Mapping 作为 ORM;

/** * @ORM\Entity * @ORM\Table(name="fos_user") / class User extends BaseUser { / * * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue (strategy="AUTO") */ 受保护的 $id;

public function __construct()
{
    parent::__construct();
    // your own logic
}

}

于 2013-08-16T13:32:33.243 回答