Doctrine2 ManyToMany具有附加属性

时间:2015-01-28 13:38:04

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

我曾经操纵过数据库,我想在Symfony2 / Doctrine2下创建一个带有属性createdAt的ManyToMany模型,用于关于收藏帖子的模型。

这是我目前的代码

用户实体:

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

和帖子实体:

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

我创建了一个表收藏夹(post_id,user_id)

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

由于

1 个答案:

答案 0 :(得分:13)

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

在用户实体中:

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

对Post实体执行相同的操作:

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

创建一个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;