我有User
和House
的多对多表,称为user_house
。而不是只有两列:user_id和house_id,我想再添加3个:例如action,created_at,updated_at。我怎么能这样做?
我找不到任何相关文档。
以下只创建一个单独的表,其中包含两列。
class User extends EntityBase
{
...
/**
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\House")
*/
protected $action;
基本上,我想要实现的是:
user_house
表格中的 user_id
,house_id
,action
的组合应该是唯一的。
当用户点击某个房子的“视图”时,user_house表会更新为some user_id
,some house_id
,view
,now()
,now()
< / p>
当用户点击房屋上的“喜欢”时,user_house表会更新为some user_id
,some house_id
,like
,now()
,now()
< / p>
当用户点击住宅上的“请求来电”时,user_house表会更新为some user_id
,some house_id
,contact
,now()
,{{1} }
有人能指出我正确的方向吗?谢谢!
答案 0 :(得分:4)
您需要通过引入名为ManyToMany
的联结实体来打破与OneToMany
和ManyToOne
的{{1}}关系,这样您就可以在联结表中添加多个列UserHasHouses
user_house
/**
* User
* @ORM\Table(name="user")
* @ORM\Entity
*/
class User
{
/**
* @ORM\OneToMany(targetEntity="NameSpace\YourBundle\Entity\UserHasHouses", mappedBy="users",cascade={"persist","remove"} )
*/
protected $hasHouses;
}
/**
* Group
* @ORM\Table(name="house")
* @ORM\Entity
*/
class House
{
/**
* @ORM\OneToMany(targetEntity="NameSpace\YourBundle\Entity\UserHasHouses", mappedBy="houses",cascade={"persist","remove"} )
*/
protected $hasUsers;
}
have additional column in ManyToMany join table in Doctrine (Symfony2)