gpt4 book ai didi

Symfony:ManyToMany 表额外列

转载 作者:行者123 更新时间:2023-12-02 18:23:20 27 4
gpt4 key购买 nike

我有一个用于 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()

当用户点击房屋上的“赞”时,user_house 表会更新为some user_idsome house_idlikenow(), now()

当用户点击房屋上的“请求通话”时,user_house 表会更新为some user_idsome house_idcontact , now(), now()

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

最佳答案

您需要通过引入名为 UserHasHouses 的联结实体来打破 ManyToManyOneToManyManyToOne 的关系,这样您就可以将多个列添加到联结表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;

}

UserHasHouses 实体

/**
* UserHasHouses
* @ORM\Table(name="user_house")
* @ORM\Entity
*/
class UserHasHouses
{

/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @ORM\ManyToOne(targetEntity="NameSpace\YourBundle\Entity\House", cascade={"persist"}, fetch="LAZY")
* @ORM\JoinColumn(name="house_id", referencedColumnName="id")
*/
protected $houses;

/**
* @ORM\ManyToOne(targetEntity="NameSpace\YourBundle\Entity\User", cascade={"persist","remove"}, fetch="LAZY" )
* @ORM\JoinColumn(name="user_id", referencedColumnName="id",nullable=true)
*/
protected $users;


/**
* @var \DateTime
* @ORM\Column(name="created_at", type="datetime")
*/
protected $createdAt;


/**
* @var \DateTime
* @ORM\Column(name="updated_at", type="datetime")
*/
protected $updatedAt;
//... add other properties
public function __construct()
{
$this->createdAt= new \DateTime('now');
}

}

have additional column in ManyToMany join table in Doctrine (Symfony2)

关于Symfony:ManyToMany 表额外列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50344073/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com