我在User实体中有以下属性来跟踪追随者和追随者。基本上,用户也可以跟随其他用户。我有一个名为app_user_follow_user的联接列,但我也想添加一个时间戳,说明每当有人跟踪另一个用户时,何时发生。如何通过此ORM指定创建的时间戳?
/**
* @ORM'ManyToMany(targetEntity="User", mappedBy="following")
*/
protected $followers;
/**
* @ORM'ManyToMany(targetEntity="User", inversedBy="followers")
* @ORM'JoinTable(name="app_user_follow_user",
* joinColumns={@ORM'JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM'JoinColumn(name="follow_user_id", referencedColumnName="id")}
* )
*/
protected $following;
Doctrine ManyToMany关系在联接表有两列时使用。如果需要添加另一列,则必须在两侧将关系转换为OneToMany,在已联接实体上将关系转换为ManyToOne。
这是完全未经测试的,但希望它能给你要点。
用户实体
/**
* @ORM'OneToMany(targetEntity="AppUserFollowUser", mappedBy="appUser")
*/
protected $followers;
/**
* @ORM'OneToMany(targetEntity="AppUserFollowUser", mappedBy="followUser")
*/
protected $following;
AppUserFollowUser实体
/**
* @ORM'Table(name = "app_user_follow_user")
*/
class AppUserFollowUser
{
/**
* @ORM'Id
* @ORM'ManyToOne(targetEntity="User", inversedBy="followers")
* @ORM'JoinColumns({
* @ORM'JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $appUser;
/**
* @ORM'Id
* @ORM'ManyToOne(targetEntity="User", inversedBy="following")
* @ORM'JoinColumns({
* @ORM'JoinColumn(name="follow_user_id", referencedColumnName="id")
* })
*/
private $followUser;
/**
* @ORM'Column(name="created_date", type="datetime", nullable=false)
*/
private $createdDate;
}
我认为您将不得不手动创建一个链接实体(entiy1 onetomany linkEntity manytone entity2。因为,通常的链接实体是自动化的,应该尽可能简单(无数据(,所以条令可以控制它,想象一下,您需要获取时间戳,如何在一个(非硬编码的(实体上执行,您将需要一个getter,并且注释不应该包含代码。