Symfony - 映射彼此不一致


Symfony - The mappings are inconsistent with each other

我有2个实体,用户和追随者。

/**
 * @ORM'Entity
 * @ORM'Table(name="users")
 */
class User extends BaseUser
{
    /**
     * @ORM'OneToMany(targetEntity="Follower", mappedBy="user")
     */
    protected $followers;
    /**
     * @ORM'OneToMany(targetEntity="Follower", mappedBy="follower")
     */
    protected $followings;
}

/**
 * @ORM'Entity
 * @ORM'Table(name="follows")
 */
class Follower
{        
    /**
     * @ORM'ManyToOne(targetEntity="User", inversedBy="followers")
     */
    protected $user;
    /**
     * @ORM'ManyToOne(targetEntity="User", inversedBy="followers")
     */
    protected $follower;
}

用户有关注者 ($followers) 和关注者 ($followings)。

我不知道为什么,但我的开发分析器说:

映射 AppBundle''Entity''User#follows 和 AppBundle''Entity''Follower#follower彼此不一致。

映射 AppBundle''Entity''Follower#follower 和 AppBundle''Entity''User#followers彼此不一致。

为什么他们不合时宜,应该这样做?

在追随者实体中,替换以下内容:

/**
 * @ORM'ManyToOne(targetEntity="User", inversedBy="followers")
 */
protected $follower;

跟:

/**
 * @ORM'ManyToOne(targetEntity="User", inversedBy="followings")
 */
protected $follower;

您可以使用命令 doctrine:schema:validate 来检查当前映射是否存在有效的正向和反向映射。

PHP 应用程序/控制台原则:架构:验证

希望这个帮助

您应该将关注者替换为以下内容:

/**
 * @ORM'ManyToOne(targetEntity="User", inversedBy="followers")
 */
protected $follower;

但我认为最好在用户实体上使用多对多关联。你可以尝试这样的事情:

/**
 * @ORM'Entity
 * @ORM'Table(name="users")
*/
class User extends BaseUser
{
  /**
   * @ORM'ManyToMany(targetEntity="User", mappedBy="followings")
  */
  private $followers;
  /**
   * @ORM'ManyToMany(targetEntity="User", inversedBy="followers")
   * @ORM'JoinTable(name="follows",
   *      joinColumns={@ORM'JoinColumn(name="following_id", referencedColumnName="id")},
   *      inverseJoinColumns={@ORM'JoinColumn(name="follower_id", referencedColumnName="id")}
   *      )
  */
  private $followings;