我的实体之间的关系有问题。
我的第一个实体User#tickets:
class User
{
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Ticket", mappedBy="user")
*/
private $tickets;
}
我的第二实体票证#负责人:
class Ticket
{
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="tickets")
*/
private $user;
/**
* @ORM\ManyToMany(targetEntity="App\Entity\User", inversedBy="tickets")
*/
private $responsible;
}
它给我一个映射错误:
[App \ Entity \ Ticket#responsible和App \ Entity \ User#tickets的映射相互不一致。
如果关联App \ Entity \ Ticket#responsible是多对多的,那么反面的App \ Entity \ User#tickets也必须是多对多的。
但是这些字段都是ManyToMany
?
如果关系的一侧是ManyToOne
,则关系的另一侧必须是OneToMany
。
您从票证到用户有两种关系。一个是ManyToOne
,您的映射似乎在说:User
可能有许多Ticket
。
Ticket::$user
的这一面似乎很好:
/**
* @ORM\ManyToOne(targetEntity="App\Entity\User", inversedBy="tickets")
*/
private $user;
但是反比关系是错误的是错误的。它是ManyToMany
,但指向ManyToOne
/**
* @ORM\OneToMany(targetEntity="App\Entity\Ticket", mappedBy="user")
*/
private $tickets;
[您也有ManyToMany
从Ticket
变为User
,但是您试图使用相同的属性来逆转关系,这没有意义。
如果要映射Ticket::$responsible
的反面,则需要向User
添加另一个属性。
例如:
// User entity
/**
* @ORM\ManyToMany(targetEntity="App\Entity\Ticket", mappedBy="responsible")
*/
private $tickets_responsibility;
// Ticket entity
/**
* @ORM\ManyToMany(targetEntity="App\Entity\User", inversedBy="tickets_responsibility")
*/
private $responsible;