SonataUserBundle + FOSUserBundle覆盖表名称或前缀-Symfony 4

时间:2018-07-09 10:36:37

标签: symfony doctrine fosuserbundle sonata-user-bundle

使用Symfony 4.1,SonataUserBundle和FOSUserBundle(当前)

按照说明进行操作,为User创建包装器类,还添加了ORM表名提示。

namespace App\Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseUser as BaseUser;

use Doctrine\ORM\Mapping as ORM;

/**
 * This file has been generated by the SonataEasyExtendsBundle.
 * @ORM\Entity(name="aegis_user")
 * @link https://sonata-project.org/easy-extends
 *
 * References:
 * @link http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
 */
class User extends BaseUser
{
    /**
     * @var int $id
     */
    protected $id;

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

但是,生成的表名(主义迁移)仍然是fos_user_user,fos_user_group等。

$this->addSql('CREATE TABLE fos_user_group (id INT ...
$this->addSql('CREATE TABLE fos_user_user (id INT ...
$this->addSql('CREATE TABLE fos_user_user_group (user_id INT ...

我至少需要表名前缀才能更改为xxx_user,xxx_group。

如何在不修改捆绑软件代码的情况下更改FosUserBundle生成的表的名称?

谢谢。

2 个答案:

答案 0 :(得分:0)

您要搜索

* @ORM\Table(name="table_name")

不是

* @ORM\Entity(name="aegis_user")

答案 1 :(得分:0)

要更改组表名称,您必须编辑奏鸣曲用户配置

config / packages / sonata_user.yaml

table:
    user_group: "my_custom_user_group_association_table_name"

了解更多详情,it's documented here