Symfony 4 - 使用 where 子句访问连接的表?



我有以下实体:

class Orders
{
...
/**
* One Order has Many Employees.
* @ORMManyToMany(targetEntity="Employee")
* @ORMJoinTable(name="orders_employees",
*      joinColumns={@ORMJoinColumn(name="order_id", referencedColumnName="id")},
*      inverseJoinColumns={@ORMJoinColumn(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 时缺少连接子句。我错过了什么吗? 我不确定为什么这不起作用。

您可以反转逻辑以获取特定员工的订单,例如

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

最新更新