关联X指的是未定义为关联的反面域Y
The association X refers to the inverse side field Y which is not defined as association
我有两个实体:
Team
:
class Teams
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="id")
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="team")
*
*/
private $id;
User
:
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;
一个团队有许多个用户
我遇到了这些错误:
The association App\Entity\User#team refers to the inverse side field
App\Entity\Teams#id which is not defined as association.
The association App\Entity\User#team refers to the inverse side field
App\Entity\Teams#id which does not exist.
我不知道我哪里错了...有人知道吗?
此致
您希望您的团队看起来像这样:
class Team
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="id")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\User")
*/
private $users;
这将生成用户团队。如果您希望您的用户能够加入多个团队,也将您的用户调用更改为 ManyToMany。
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;
另一方面,如果您想要双向关系,请在团队实体上添加 属性 用户。
它对你不起作用,因为你定义的映射在 $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;
使用单数名称命名实体是一种很好的做法,因此您可能希望将 Teams 更改为 Team 实体。
我有两个实体:
Team
:
class Teams
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="id")
* @ORM\OneToMany(targetEntity="App\Entity\User", mappedBy="team")
*
*/
private $id;
User
:
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;
一个团队有许多个用户
我遇到了这些错误:
The association App\Entity\User#team refers to the inverse side field App\Entity\Teams#id which is not defined as association.
The association App\Entity\User#team refers to the inverse side field App\Entity\Teams#id which does not exist.
我不知道我哪里错了...有人知道吗?
此致
您希望您的团队看起来像这样:
class Team
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer", name="id")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\User")
*/
private $users;
这将生成用户团队。如果您希望您的用户能够加入多个团队,也将您的用户调用更改为 ManyToMany。
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;
另一方面,如果您想要双向关系,请在团队实体上添加 属性 用户。
它对你不起作用,因为你定义的映射在 $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;
使用单数名称命名实体是一种很好的做法,因此您可能希望将 Teams 更改为 Team 实体。