我有两个实体:
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;
一个团队有多个用户
我遇到了这些错误:
关联App \ Entity \ User#team指的是反面字段 App \ Entity \ Teams#id未定义为关联。
关联App \ Entity \ User#team指的是反面字段 App \ Entity \ Teams#id不存在。
我不知道我错在哪里......任何人都知道吗?
此致
答案 0 :(得分:2)
我对你想做什么感到困惑。
如果您想从用户端获得单向关系,请删除
* @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;
使用单数名称命名实体是一种很好的做法,因此您可能希望将团队更改为团队实体。
答案 1 :(得分:0)
您希望您的团队看起来像这样:
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;