php - Additional fields in ORM-ManyToMany relation -
i have following tables data: users , groups. in database relation between 2 entities manytomany, because many users can in many groups , many groups can have many users. simple. created code , works:
user entity:
/** * @orm\entity * @orm\table(name="users") */ class user extends baseuser { /** * @orm\id * @orm\column(type="integer") * @orm\generatedvalue(strategy="auto") */ protected $id; /** * @orm\manytomany(targetentity="group", inversedby="users") * @orm\jointable(name="users_in_groups") */ protected $groups; }
group entity:
/** * @orm\entity * @orm\table(name="groups") */ class group { /** * @orm\id * @orm\column(type="integer") * @orm\generatedvalue(strategy="auto") */ protected $id; /** * @orm\manytomany(targetentity="user", mappedby="groups") */ protected $users; }
symfony created 3 tables: users
, groups
, users_in_groups
. work great, want set different permissions different users in each group. example: user1 admin in group1 , standard member in group2, etc. best solution insert new field users_in_groups
table created @orm\jointable function , don't know how can that. know simple solution problem?
the simpliest way i've found use third entity
here's how work in case
user entity :
/** * @orm\entity * @orm\table(name="users") */ class user extends baseuser { /** * @orm\id * @orm\column(type="integer") * @orm\generatedvalue(strategy="auto") */ protected $id; /** * @orm\onetomany(targetentity="usergroup", mappedby="user") * */ protected $usergroup; }
group entity :
/** * @orm\entity * @orm\table(name="groups") */ class group { /** * @orm\id * @orm\column(type="integer") * @orm\generatedvalue(strategy="auto") */ protected $id; /** * @orm\onetomany(targetentity="usergroup" , mappedby="group"}) * */ protected $usergroup; }
usergroup entity:
/** * @orm\entity * @orm\table(name="user_group") */ class usergroup { /** * @orm\id * @orm\column(type="integer") * @orm\generatedvalue(strategy="auto") * * @var integer $id */ protected $id; /** * @orm\manytoone(targetentity="user", inversedby="usergroup") * @orm\joincolumn(name="user_id", referencedcolumnname="id") * */ protected $user; /** * @orm\manytoone(targetentity="group", inversedby="usergroup") * @orm\joincolumn(name="group_id", referencedcolumnname="id") * */ protected $group; // additional fields, getter, setters, _construct, __tostring }
Comments
Post a Comment