我有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;