我想扩展默认的用户实体属性。在使用SonataUserBunle扩展FOSUserBundle之后的数据库中,有2个用于存储用户的表:fos_user
和fos_user_user
。我想延长fos_user
这是app / AppKernel.php:
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
在app / config.yml文件中我设置:
fos_user:
db_driver: orm<br>
firewall_name: main<br>
user_class: Acme\DemoBundle\Entity\User<br>
group:<br>
group_class: Application\Sonata\UserBundle\Entity\Group<br>
sonata_user:
security_acl: true
class:
user: Acme\DemoBundle\Entity\User
admin:
user:
class: Acme\DemoBundle\Admin\UserAdmin
parameters:
sonata.user.admin.user.class: Blogger\BlogBundle\Admin\UserAdmin
sonata.user.admin.user.entity: Blogger\BlogBundle\Entity\User
doctrine:
orm:
auto_mapping: auto
SonataUserBundle在src/Application/Sonata/UserBundle
中创建
要覆盖SonataUserBundle,我通过在src/Acme/DemoBundle/Admin/UserAdmin
中创建另一个UserAdmin类来扩展UserAdmin,一切正常
现在我想扩展User实体(fos_user
表)以添加新属性
这是我想要扩展默认用户实体的Acme / Demo / Entity / User.php
namespace Acme\DemoBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/*
* @ORM\Column(type="string", name="newAttribute")
*/
protected $newAttribute;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
如何使用fos_user
扩展默认php app/console doctrine:generate:entities Acme/DemoBundle
表格
我已经阅读了很多关于这个问题的帖子,但没有一个解决方案对我有帮助。我试图扩展Model类而不是Entity类,但也没有改变
答案 0 :(得分:1)
你不必。
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle')
这里你告诉SonataUserBundle也使用FOSUserBundle。
然后在您的用户实体中设置:
use Sonata\UserBundle\Entity\BaseUser as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="User")
*/
class User extends BaseUser
因为您已经对SonataUserBundle说“使用fosuserbundle”,并且您从奏鸣曲用户捆绑用户实体扩展,他将把这两个模型“合并”为1,并在您的用户实体中添加您的自定义字段。