本文概述
如我们之前的文章”如何在Symfony中使用FOSUserBundle实现用户系统”中所示, 此捆绑包使你可以轻松拥有超级用户系统。
但是, 你可能需要向用户表中添加更多字段, 因为普通结构仅具有基本字段来向用户授予访问权限。
实现
要手动添加新字段, 只需添加一个名称, 属性, getter和setter的变量, 更新数据库的架构(或使用数据库管理器手动添加字段)就可以了。
FosUserBundle需要一个处理用户系统的User.php类, 该类先前是在实现FOSUserBundle的过程中创建的, 它应类似于:
注意:请记住, 如果你已经实现了用户捆绑包, 则该类是在项目中的某个位置创建的。
<?php
namespace 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;
}
最后, 该类应如下所示:
<?php
namespace 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的更多信息。
现场例子
以下代码段显示了不同类型的常用字段:
<?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;
玩得开心
评论前必须登录!
注册