Symfony4 - 未定义的索引:实体连接
Symfony4 - Undefined index: on entity join
我得到一个
undefined index: order
错误,尽管从我使用 this documentation 可以看出我做的一切都是正确的。有什么想法吗?
OrdersRepository
public function findByDateAndEmployee(\DateTime $date, int $employeeId)
{
return $this->createQueryBuilder('o')
->select('o')
->join('o.employees' ,'e')
->where('e.id = :id')
->setParameter('id',$employeeId)
->getQuery()->getSql();
}
订单实体
class Orders
{
...
/**
* One Order has Many Employees.
* @ORM\OneToMany(targetEntity="Employee", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
*/
private $employees;
我知道如果我更改 "mappedBy" 中的变量,它会将错误消息更改为任何变量名称,但是当您在下面看到时 "order" 应该是 mappedBy 变量(至少,我觉得)。
OrderEmployees 实体
class OrderEmployees
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $orderId;
/**
* @ORM\Column(type="smallint")
*/
private $employeeId;
/**
* @ORM\ManyToOne(targetEntity="Orders", inversedBy="employees")
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
*/
private $order;
public function getId(): ?int
{
return $this->id;
}
public function getOrderId(): ?int
{
return $this->orderId;
}
public function setOrderId(int $orderId): self
{
$this->orderId = $orderId;
return $this;
}
public function getEmployeeId(): ?int
{
return $this->employeeId;
}
public function setEmployeeId(int $employeeId): self
{
$this->employeeId = $employeeId;
return $this;
}
public function getOrder(): Orders
{
return $this->order;
}
public function setOrder(Orders $order): self
{
$this->order = $order;
return $this;
}
}
将订单实体中的 targetEntity="Employee"
更改为 targetEntity="OrderEmployees"
应该会有所帮助。
来自docs:
targetEntity: FQCN of the referenced target entity. Can be the
unqualified class name if both classes are in the same namespace.
我得到一个
undefined index: order
错误,尽管从我使用 this documentation 可以看出我做的一切都是正确的。有什么想法吗?
OrdersRepository
public function findByDateAndEmployee(\DateTime $date, int $employeeId)
{
return $this->createQueryBuilder('o')
->select('o')
->join('o.employees' ,'e')
->where('e.id = :id')
->setParameter('id',$employeeId)
->getQuery()->getSql();
}
订单实体
class Orders
{
...
/**
* One Order has Many Employees.
* @ORM\OneToMany(targetEntity="Employee", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
*/
private $employees;
我知道如果我更改 "mappedBy" 中的变量,它会将错误消息更改为任何变量名称,但是当您在下面看到时 "order" 应该是 mappedBy 变量(至少,我觉得)。
OrderEmployees 实体
class OrderEmployees
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="integer")
*/
private $orderId;
/**
* @ORM\Column(type="smallint")
*/
private $employeeId;
/**
* @ORM\ManyToOne(targetEntity="Orders", inversedBy="employees")
* @ORM\JoinColumn(name="order_id", referencedColumnName="id")
*/
private $order;
public function getId(): ?int
{
return $this->id;
}
public function getOrderId(): ?int
{
return $this->orderId;
}
public function setOrderId(int $orderId): self
{
$this->orderId = $orderId;
return $this;
}
public function getEmployeeId(): ?int
{
return $this->employeeId;
}
public function setEmployeeId(int $employeeId): self
{
$this->employeeId = $employeeId;
return $this;
}
public function getOrder(): Orders
{
return $this->order;
}
public function setOrder(Orders $order): self
{
$this->order = $order;
return $this;
}
}
将订单实体中的 targetEntity="Employee"
更改为 targetEntity="OrderEmployees"
应该会有所帮助。
来自docs:
targetEntity: FQCN of the referenced target entity. Can be the unqualified class name if both classes are in the same namespace.