0

我正在尝试建立一个模式来捕获 Twitter 用户及其关注者。

我有两张桌子。Twitter用户和关注者。Follower 有 3 个字段 - id、twitterUser、follower。

当一个 twitter 用户被添加到表中时,我还会在 Followers 中添加一行,以便将他们与我可能感兴趣的其他用户一起加入。

但是,如果我让 Symfony/Doctrine 使用以下内容构建表 -

/**
 * @ORM\Entity
 * @ORM\Table(name="follower")
 * @ORM\HasLifecycleCallbacks
 */
class Follower
{
    public function __construct()
    {
    }

    /**
    * @ORM\Id
    * @ORM\Column(type="integer")
    * @ORM\GeneratedValue(strategy="AUTO")
    */
    protected $id;

    /**
     * @ORM\ManyToOne(targetEntity="TwitterUser", inversedBy="followers")
     * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
     */
    protected $twitterUser;

    /**
     * @ORM\ManyToOne(targetEntity="TwitterUser", inversedBy="following")
     * @ORM\JoinColumn(name="follower_id", referencedColumnName="id")
     */
    protected $follower;
...

它坚持为我不想要的外键创建一个外键follower,因为我不想让所有 twitter 用户确保我的加入始终有效。

我能想到的唯一方法是删除注释并自己创建连接的 SQL。有更聪明的方法吗?

4

1 回答 1

0

我建议使用ManyToMany自引用关系,如下所述: http: //docs.doctrine-project.org/en/2.0.x/reference/association-mapping.html#many-to-many-self-referencing

于 2013-09-16T14:35:56.537 回答