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.