Symfony:ManyToMany表额外的列

时间:2018-05-15 06:59:38

标签: symfony doctrine-orm many-to-many

我有UserHouse的多对多表,称为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_idhouse_idaction的组合应该是唯一的。

当用户点击某个房子的“视图”时,user_house表会更新为some user_idsome house_idviewnow()now() < / p>

当用户点击房屋上的“喜欢”时,user_house表会更新为some user_idsome house_idlikenow()now() < / p>

当用户点击住宅上的“请求来电”时,user_house表会更新为some user_idsome house_idcontactnow(),{{1} }

有人能指出我正确的方向吗?谢谢!

1 个答案:

答案 0 :(得分:4)

您需要通过引入名为ManyToMany的联结实体来打破与OneToManyManyToOne的{​​{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;

}

UserHasHouses实体

/**
 * 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)