Symfony 4 - Доступ к объединенным таблицам с предложением where? - PullRequest
0 голосов
/ 11 октября 2018

У меня есть следующая сущность:

class Orders
{
  ...
      /**
      * One Order has Many Employees.
      * @ORM\ManyToMany(targetEntity="Employee")
      * @ORM\JoinTable(name="orders_employees",
      *      joinColumns={@ORM\JoinColumn(name="order_id", referencedColumnName="id")},
      *      inverseJoinColumns={@ORM\JoinColumn(name="employee_id", referencedColumnName="id")},
      *      )
      */
      private $employees;

Я пытаюсь сделать следующее:

   $orders = $this->getDoctrine()->
        ->getRepository(Orders::class)
        ->findBy(['employees' => $userId);

однако это не работает, так как генерирует SQL:

... FROM orders t0 WHERE orders_employees.employee_id = ?

По сути, в нем отсутствует предложение объединения при генерации SQL.Я что-то пропустил?Я не уверен, почему это не работает.

1 Ответ

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

Вы можете изменить свою логику, чтобы получать заказы для конкретного сотрудника, например

$employee = $this->getDoctrine()->getRepository(Employee::class)->find($userId);
$orders = $employee->getOrders();

Или вы можете использовать построитель запросов

$repo = $this->getDoctrine()->getRepository(Orders::class);
$orders= $repo->createQueryBuilder('o')
                ->select('o')
                ->join('o.employees' ,'e')
                ->where('e.id = :id')
                ->setParameter('id',$userId)
                ->getResult();
...