Doctrine2 ManyToMany具有附加属性

Yoh*_*ann 1 many-to-many symfony doctrine-orm

我以前操纵数据库,我想在Symfony2/Doctrine2下创建一个带有属性createdAt的ManyToMany模型,用于关于喜欢的帖子的模型.

这是我目前的代码

用户实体:

/**
* @ORM\ManyToMany(targetEntity="App\Entity\Post", inversedBy="posts", cascade={"persist"})
* @ORM\JoinTable(name="favorite")
*/
private $favorites;
Run Code Online (Sandbox Code Playgroud)

和一个邮政实体:

/**
* @ORM\ManyToMany(targetEntity="App\Entity\User", mappedBy="favorites")
*/
private $users;
Run Code Online (Sandbox Code Playgroud)

我有一个创建的表最喜欢的(post_id,user_id).

如何创建表格收藏夹(post_id,user_id,createdAt)

谢谢

Ren*_*ené 13

您可以通过创建一对多关系并在中间创建自己的实体来实现此目的

在用户实体中:

/**
 * @ORM\OneToMany(targetEntity="App\Entity\UserFavorites", mappedBy="user", cascade={"persist"})
 */
private $userFavorites;
Run Code Online (Sandbox Code Playgroud)

为Post实体做同样的事情:

/**
 * @ORM\OneToMany(targetEntity="App\Entity\UserFavorites", mappedBy="post", cascade={"persist"})
 */
private $userFavorites;
Run Code Online (Sandbox Code Playgroud)

创建一个UserFavorites实体来连接2:

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="userFavorites")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Post", inversedBy="userFavorites")
 * @ORM\JoinColumn(name="post_id", referencedColumnName="id")
 */
private $post;

/**
 * @var datetime $created
 *
 * @ORM\Column(name="created", type="datetime")
 */
private $created;
Run Code Online (Sandbox Code Playgroud)