我曾经操纵过数据库,我想在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)?
由于
答案 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;