我有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)。
我不知道为什么,但我的开发者说:
映射AppBundle \ Entity \ User#followings和AppBundle \ Entity \ Follower#follower彼此不一致。
映射AppBundle \ Entity \ Follower#follower和AppBundle \ Entity \ User#followers彼此不一致。
为什么它们不一致而且应该完成?
在Follower Entity中,替换为:
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="followers")
*/
protected $follower;
有:
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="followings")
*/
protected $follower;
您可以使用命令doctrine:schema:validate检查当前映射是否有效的正向和反向映射。
php app / console doctrine:schema:validate
希望这有帮助
您应该通过以下方式替换粉丝:
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="followers")
*/
protected $follower;
但我认为最好在User Entity上使用ManyToMany关联。你可以尝试这样的事情:
/**
* @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;