我有一个用户实体和一个关系实体。 (关系实体用于识别社交关系.face朋友,推特粉丝......等)
这是我的关系课,以便更好地理解它:
/**
* Describes a relationship between two users in the direction of user1 to user2. (i.e. user1 is 'friends' with user2)
* This relationship may be mutual
* @package AppBundle\Entity
*/
class Relationship {
protected $id;
protected $user1;
protected $user2;
protected $source;
protected $type;
protected $mutual;
/**
* @param string $source The source of the relationship information (facebook, twitter...etc.)
* @param string $type The type of relationship. (source specific) e.g. friends, follower
* @param int $user1 The user id
* @param int $user2 The user id
* @param bool $mutual If set to true than the reverse relationship is true (i.e. user2 is 'friends' with user1 as well)
* This may seem obvious for facebook friends but the twitter follower relationship is not always mutual
*/
function __construct($user1,$user2,$source,$type,$mutual)
{
$this->user1 = $user1;
$this->user2 = $user2;
$this->source = $source;
$this->type = $type;
$this->mutual = $mutual;
}
我遇到的麻烦是将用户实体映射到关系实体。
用户的特定实例可能是关系中的user1
或 user2
。
我无法专门映射到关系实体的user1
列,因为它可能是user2
我试图通过让一个条目双向定义关系(使用$ mutual属性完成)来避免Relationships表中的重复条目。
有没有办法在Doctrine中映射它,以便用户可以访问他们的关系(例如User-> getRelationships),无论他们是user1
还是user2
?
答案 0 :(得分:1)
老实说“我不知道”:(
但我在这里回答的原因是要说明一点。 User1和User2都是用户的实例。所以,这里的问题是用户实体充当两个不同的角色。用户正在引用另一个用户,我的意思是用户的主键是用户外键(自引用)。我个人在制作社交申请时遇到了这个问题。一个用户是另一个用户的朋友。用户在朋友的同时有朋友。我通过复制你不想要的行解决了这个问题。顺便说一句,我也在等待任何击球手解决方案。祝你好运