如何在Symfony中使用FOSUserBundle手动将自定义字段添加到用户表

本文概述

  • 实现
  • 现场例子
如我们之前的文章” 如何在Symfony中使用FOSUserBundle实现用户系统” 中所示, 此捆绑包使你可以轻松拥有超级用户系统。
但是, 你可能需要向用户表中添加更多字段, 因为普通结构仅具有基本字段来向用户授予访问权限。
实现要手动添加新字段, 只需添加一个名称, 属性, getter和setter的变量, 更新数据库的架构(或使用数据库管理器手动添加字段)就可以了。
FosUserBundle需要一个处理用户系统的User.php类, 该类先前是在实现FOSUserBundle的过程中创建的, 它应类似于:
注意:请记住, 如果你已经实现了用户捆绑包, 则该类是在项目中的某个位置创建的。
< ?phpnamespace mynamespace; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; class User extends BaseUser{/*** @ORM\Id* @ORM\Column(type="integer")* @ORM\GeneratedValue(strategy="AUTO")*/protected $id; // Change the targetEntity path if you want to create the group/*** @ORM\ManyToMany(targetEntity="userBundle\Entity\Group")* @ORM\JoinTable(name="fos_user_user_group", *joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, *inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}* )*/protected $groups; public function __construct(){parent::__construct(); // your own logic}}

现在, 要添加一个简单字段(即” about” ), 先前的类现在将包含以下方法和变量:
< ?php/** * @var string * * @ORM\Column(name="about", type="string", length=255, nullable=true) */private $about; /** * Get about * * @return String */public function getAbout(){return $this-> about; }/** * Set about * * @param String $about * @return User */public function setAbout($about){$this-> about = $about; return $this; }

最后, 该类应如下所示:
< ?phpnamespace mynamespace; use FOS\UserBundle\Model\User as BaseUser; use Doctrine\ORM\Mapping as ORM; class User extends BaseUser{/*** @ORM\Id* @ORM\Column(type="integer")* @ORM\GeneratedValue(strategy="AUTO")*/protected $id; /*** @var string** @ORM\Column(name="about", type="string", length=255, nullable=true)*/private $about; // Change the targetEntity path if you want to create the group/*** @ORM\ManyToMany(targetEntity="userBundle\Entity\Group")* @ORM\JoinTable(name="fos_user_user_group", *joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")}, *inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}* )*/protected $groups; public function __construct(){parent::__construct(); // your own logic}/*** Get about** @return String*/public function getAbout(){return $this-> about; }/*** Set about** @param String $about* @return User*/public function setAbout($about){$this-> about = $about; return $this; }}

现在, 只需使用以下命令更新数据库的架构(或手动在数据库中添加字段):
php bin/console doctrine:schema:update --force

现在, 如果你打开数据库, 你将看到新的” 关于” 字段。在此处阅读该学说的官方文档中有关@ORM \ Column的更多信息。
现场例子【如何在Symfony中使用FOSUserBundle手动将自定义字段添加到用户表】以下代码段显示了不同类型的常用字段:
< ?php///// AutoIncrementable integer field/** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */private $myfieldname; ///// Limit string with nullable type/** * @var string * * @ORM\Column(name="myfieldname", type="string", length=255, nullable=true) */private $myfieldname; ///// Long text field/** * @var string * * @ORM\Column(name="myfieldname", type="text") */private $myfieldname; ///// Boolean field/** * @var string * * @ORM\Column(name="myfieldname", type="boolean") */private $myfieldname;

玩得开心

    推荐阅读