Php Symfony-映射彼此不一致
我有2个实体,用户和跟随者Php Symfony-映射彼此不一致,php,symfony,doctrine-orm,doctrine,Php,Symfony,Doctrine Orm,Doctrine,我有2个实体,用户和跟随者 /** * @ORM\Entity * @ORM\Table(name="users") */ class User extends BaseUser { /** * @ORM\OneToMany(targetEntity="Follower", mappedBy="user") */ protected $followers; /** * @ORM\OneToMany(targetEntity="Foll
/**
* @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)和追随者($followers)
我不知道为什么,但我的开发探查器说:
映射AppBundle\Entity\User#如下和
AppBundle\Entity\Follower#Follower之间不一致
映射AppBundle\Entity\Follower\Follower和
AppBundle\Entity\User#追随者之间不一致
为什么它们不一致并且应该这样做?在跟随者实体中,替换以下内容:
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="followers")
*/
protected $follower;
与:
您可以使用命令doctor: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;
我认为这是完全错误的模式。。。我想最好创建实体
user
和实体follow
,并在follow
中使用who
作为user.id
和who作为user.id
。。。我相信它会更好,更透明。。。您可以轻松地连接表以接收以下内容和追随者……对我来说,这是php bin/console原则:schema:validate
hi@DanChaltiel。谢谢你的贡献。您指的是框架版本3的文件夹结构。这是一个关于v2的老答案。
/**
* @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;