これは私がやっていることですし、私のためにかなりうまく機能:
私は、ユーザー、役割、およびグループ企業
ユーザエンティティ
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;
public function __construct()
{
parent::__construct();
// your own logic
}
}
を持っていますグループエンティティ
use FOS\UserBundle\Model\Group as BaseGroup;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_group")
*/
class Group extends BaseGroup
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
}
このすべては配列として提供されますが、symfonyはそれから延長するのSymfony \コンポーネント\セキュリティ\コア\役割\役割クラスを提供して今すぐ役割デフォルトでFOS docs
からです。
ので、あなたの役割のクラスでは、次のようになります。あなただけの次のようにマッピング情報を追加する必要が魔法を行うに
エンティティのロール
use Symfony\Component\Security\Core\Role\Role as BaseRol;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="fos_role")
*/
class Role extends BaseRol
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
。
グループおよびユーザエンティティその後
/**
* @ORM\ManyToMany(targetEntity="path/to/my/roleEntity")
* @ORM\JoinTable(name="join_table_name",
* joinColumns={@ORM\JoinColumn(name="join_column_name_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="join_column_name_id", referencedColumnName="id")}
*)
*/
protected $roles;
の両方における役割は、あなたのデータベースを更新サポートするために、ユーザーエンティティ
/**
* @ORM\ManyToMany(targetEntity="path/to/my/groupEntity")
* @ORM\JoinTable(name="join_table_name",
* joinColumns={@ORM\JoinColumn(name="join_column_name_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="join_column_name_id", referencedColumnName="id")}
*)
*/
protected $groups;
でグループをサポートするために、あなたは準備ができています行く。
もし私があなたの言ったように私は自分のやり方でそれをやろうとします。要点は、この機能に取り組むことを避け、symfonyなどで将来のアップデートに共通のバンドルを使用する利点を活用することでした。 他の誰かがもっとアイデアを持っていれば...私が決定する前にもっと多くのオプションを聞きたい最終的に自分自身を認証するユーザの役割の機能の管理。等 –