FOSUserBundle Symfony2:两个条令表
我正在使用FOSUserBundle开发我的网站项目,我想知道(以及如何)为用户注册设置两个不同的表。我想这样做,因为我认为在一个表和另一个用户中设置管理员更容易。p> 我保持开放的心态,所以如果你认为我的决定不对,如果你能为我提供另一种方法,那就太好了FOSUserBundle Symfony2:两个条令表,symfony,doctrine,fosuserbundle,Symfony,Doctrine,Fosuserbundle,我正在使用FOSUserBundle开发我的网站项目,我想知道(以及如何)为用户注册设置两个不同的表。我想这样做,因为我认为在一个表和另一个用户中设置管理员更容易。p> 我保持开放的心态,所以如果你认为我的决定不对,如果你能为我提供另一种方法,那就太好了 感谢阅读。我认为您可以通过定义自定义用户提供程序(一个将检索您的用户实体的类,给定用户名: 话虽如此,我不确定这是一个很好的方式来做你想做的,因为你将有信息(电子邮件,密码…)将分为几个表 我会做一些有点不同的事情:创建一个管理员实体,它将存储
感谢阅读。我认为您可以通过定义自定义用户提供程序(一个将检索您的用户实体的类,给定用户名: 话虽如此,我不确定这是一个很好的方式来做你想做的,因为你将有信息(电子邮件,密码…)将分为几个表 我会做一些有点不同的事情:创建一个管理员实体,它将存储关于管理员的设置(这个和那个的权限等),并在您的用户实体之间建立关系(它将单独存储用户名/密码…)和管理员实体。如果用户是普通用户,此关系将为空,但如果是管理员,则将链接到管理员实体。详细信息: 我假设您有一个根据设置的用户实体。只需添加一个与管理员实体的OneToOne关系
<?php
// src/Acme/UserBundle/Entity/User.php
namespace Acme\UserBundle\Entity;
use FOS\UserBundle\Model\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\OneToOne(targetEntity="Acme\UserBundle\Entity\Administrator", inversedBy="user")
*/
private $administrator;
public function __construct()
{
parent::__construct();
// your own logic
}
public function getAdministrator()
{
return $this->administrator;
}
public function setAdministrator(Acme\UserBundle\Entity\Administrator $administrator)
{
$this->administrator = $administrator;
$adinistrator->setUser($this);
return $this;
}
}
我认为你的解决方案比我的好。但是…我怎么能做到呢?你能给我推荐一个网站吗?谢谢。我在我的第一个答案中添加了更多细节,希望能有所帮助!
<?php
// src/Acme/UserBundle/Entity/Administrator.php
namespace Acme\UserBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="Administrator")
*/
class Administrator
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\OneToOne(targetEntity="Acme\UserBundle\Entity\User", mappedBy="administrator")
*/
private $user;
/**
* @var boolean
*
* @ORM\Column(name="canDeletePosts", type="boolean")
*/
private $canDeletePosts;
// And all the fields you need !
public function __construct()
{
parent::__construct();
// your own logic
}
public function getUser()
{
return $this->user;
}
public function setUser(Acme\UserBundle\Entity\User $user)
{
$this->user = $user;
return $this;
}
public function setCanDeletePosts($canDeletePosts)
{
$this->canDeletePosts = $canDeletePosts;
return $this;
}
public function getCanDeletePosts()
{
return $this->canDeletePosts;
}
}
$canDeletePosts = $this->getUser()->getAdministrator()->getCanDeletePosts();
if ($canDeletePosts)
{
// Remove the post
}