Symfony2中的DQL \ SQL查询。很多桌子

时间:2015-03-26 18:52:34

标签: php symfony doctrine-orm dql

我对DQL查询有疑问。

我有这些表:'orders','orders_kitchen','orders_institution'和'variants'。

从'变体'表中,我获得了已经提供的订单ID。

$orders = $em->createQuery("SELECT o
                FROM AppBundle:Orders o
                JOIN AppBundle:OrdersInstitution oi
                WHERE oi.idInstittuion = :institution AND o.idorder =                             oi.idOrder AND o.finalDeal IS NULL
                ORDER BY o.idorder DESC")
            ->setParameter("institution",$institution)->getResult();

当客户离开订单时,他可以通过三种方式继续:

  1. 不要在某些机构的'orders_institution'表中添加记录,并在某些类型的菜肴中添加条目id
  2. 不在任何表中添加条目
  3. 在'orders_kitchen'表中添加一个条目,某些类型的菜肴ID适用于该机构
  4. 我需要找到所有未选择任何一个机构的订单,没有任何类型的菜肴,或者至少有一个厨房与机构合作(这可以是一个阵列)。

    我不想选择ID在表'变种'中的订单。

1 个答案:

答案 0 :(得分:0)

你可以尝试使用类似SQL的东西(DQL不能很好地连接很多):

   $sql =  'SELECT * FROM Orders o JOIN
(SELECT o1.id FROM Orders o1 WHERE o1.cuisine IS NULL OR o1.institution IS NULL) o1  JOIN
(SELECT * FROM Orders o2 INNER JOIN Cuisine c ON c.insitution_id =  '.$institution_id.') o2 JOIN (your query);';

这样的事情应该这样做,而不是SQL的专家我通常最终会尝试直到我得到它!

我不认为它是正确的,但至少它是一个开始:p