【问题标题】:Symfony sql query array in array数组中的 Symfony sql 查询数组
【发布时间】:2022-06-17 17:59:51
【问题描述】:

我正在寻找与状态匹配的多个 Items 对象(在订单中):

我有 3 张桌子:

  1. 项目。
  2. 订单(带有编号顺序、状态等)OneToMany 和 OrderDetails, 带有项目的多对一。
  3. OrderDetails(包含 1 个订单的详细信息:id_item、orders_id...) ManyToOne with Orders, , ManyToOne with Items。

订单(带状态)-> OrderDetails(带项目)

我想为“example”('Order.state')写请求:

$order = $this->entityManager->getRepository(OrderDetails::class)->findBy(['items => $id_item, 'Order.state' => 2], ['id' => 'desc ']);

如何正确编写此查询?也许我需要项目存储库中的功能? 提前致谢。

编辑(在您的帮助下,谢谢): 我在存储库中添加功能: 第一次我做了一个 sql 查询并在 phpmyadmin 中对其进行了测试,以确定我想要什么: 我的 sql(可能不完美,但可行)

SELECT
    i.id,
    c.state_id,
    i.items_number,
    o.quantity,
    u.code,
    u.id AS idcustomer,
    c.customers_id 
    FROM
    items AS p,
    order AS c,
    order_details AS o,
    customers AS u 
    WHERE
    c.state_id = 1 
    AND i.id = 1 
    AND c.customers_id = u.id

这是我在 symfony 中的代码,但在 JOIN 中出现错误(我不确定语法)。

            $query = $entityManager->createQuery(
             'SELECT
                 p.id,
                 c.state_id,
                 i.itemno,
                 o.quantity,
                 u.code,
                 u.id AS idcustomer,
                 c.customers_id

             JOIN
                i.Items o,
                o.Order c,
                c.Customers u
             FROM
                 App\Entity\Items AS i,
                 App\Entity\Order AS c,
                 App\Entity\OrderDetails AS o,
                 App\Entity\Customers AS u
             WHERE c.state_id IN (:ostate)
                 AND i.id IN (:items_id)
                 AND c.customers_id IN (u.id)
             '
         )->setParameter('items_id', $items_id)
          ->setParameter('ostate', $ostate);

return $query->getResult();

【问题讨论】:

  • 是的,您不能将 findBy、findOneBy 与另一个实体的属性一起使用,因此您需要使用 DQL(或 sql)在存储库中执行自己的功能
  • 你必须遵循 Symfony 文档:symfony.com/doc/current/…

标签: symfony multidimensional-array repository where-clause entitymanager


猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-14
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多