Symfony4 - неопределенный индекс: при объединении сущностей - PullRequest
0 голосов
/ 11 октября 2018

Я получаю

неопределенный индекс: заказ

ошибка, хотя из того, что я могу сказать, используя эту документацию Яделаю все правильно.Есть идеи?

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();
}

Orders Entity

class Orders
{
  ...
    /**
     * One Order has Many Employees.
     * @ORM\OneToMany(targetEntity="Employee", mappedBy="order", cascade={"persist", "remove"}, orphanRemoval=TRUE)
     */
     private $employees;

Я знаю, если я изменю переменную в«mappedBy» изменит сообщение об ошибке на имя переменной, однако, когда вы увидите ниже, «order» должен быть переменной mappedBy (по крайней мере, я думаю).

OrderEmployees Entity

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;
    }
}

1 Ответ

0 голосов
/ 11 октября 2018

Изменение targetEntity="Employee" на targetEntity="OrderEmployees" в вашем объекте Orders должно помочь.

Из документов :

targetEntity: FQCN указанной целиюридическое лицо.Может быть неквалифицированным именем класса, если оба класса находятся в одном пространстве имен.

...