本文概述
- 实现
- 现场例子
但是, 你可能需要向用户表中添加更多字段, 因为普通结构仅具有基本字段来向用户授予访问权限。
实现要手动添加新字段, 只需添加一个名称, 属性, 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;
玩得开心
推荐阅读
- 如何在SVN Tortoise中删除已保存/缓存的密码
- 如何解决Virtualbox异常(在BIOS中,对于所有CPU模式(VERR_VMX_MSR_A??LL_VMX_DISABLED)均禁用了VT-x)
- CefSharp ChromeDevToolsSystemMenu在当前上下文中不存在
- Android检测webview URL更改
- 在离子2处失败'离子cordova运行android'
- 在开发ionic2-cordova app时,“bnr不被认为是内部命令”
- 离子 - 错误(找不到模块'android-versions')
- Android ndk没有捆绑v8 .a文件符号
- UnsatisfiedLinkError,Cocos2D-x app在启动时崩溃