Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony-映射彼此不一致_Php_Symfony_Doctrine Orm_Doctrine - Fatal编程技术网

Php Symfony-映射彼此不一致

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

我有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)和追随者($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;