Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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 关联X指未定义为关联的反向侧字段Y_Php_Symfony_Associations_Field - Fatal编程技术网

Php 关联X指未定义为关联的反向侧字段Y

Php 关联X指未定义为关联的反向侧字段Y,php,symfony,associations,field,Php,Symfony,Associations,Field,我有两个实体: 团队: class Teams { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer", name="id") * @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="team") * */ private $id; 用户: class User implement

我有两个实体:

团队

class Teams
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer", name="id")
     * @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="team")
     *
     */
    private $id;
用户

class User implements UserInterface, \Serializable
{
    /**
     * @var int
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\Teams", inversedBy="id")
     * @ORM\JoinColumn(name="team_id", referencedColumnName="id")
     */
    private $team;
一个团队拥有多个用户

我有这些错误:

关联App\Entity\User#团队引用反向侧字段 App\Entity\Teams\id,未定义为关联

关联App\Entity\User#团队引用反向侧字段 App\Entity\Teams\id不存在

我不知道我错在哪里。。。有人知道吗


关于

您希望您的团队看起来像这样:

class Team
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer", name="id")
     */
    private $id;

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\User")
     */
    private $users;
这将生成用户团队。如果您希望您的用户能够在多个团队中使用,请将您的用户呼叫也更改为多个

class User implements UserInterface, \Serializable
{
    /**
     * @var int
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\ManyToMany(targetEntity="App\Entity\Team")
     */
    private $teams;

我有点不明白你想做什么

如果您想从用户端获得单向关系,请删除

 * @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="team")
这个代码

并且用户应该只有

/**
 * @ORM\ManyToOne(targetEntity="App\Entity\Teams")
 */
private $teams;
另一方面,如果需要双向关系,则在teams实体上添加属性user

它不适用于您,因为您定义的映射位于$id上,并且应该位于属性上

双向方式:

class Teams
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer", name="id")
     *
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="teams")
     * @ORM\JoinColumn(name="team_id", referencedColumnName="id")
     */
    private $user;

使用单数名称命名实体是一种很好的做法,因此您可能希望将团队更改为团队实体

也检查

class User implements UserInterface, \Serializable
{
    /**
     * @var int
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\OneToMany(targetEntity="App\Entity\Teams", mappedBy="user")
     */
    private $teams;