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;