0

您将如何在 Opencart 中获得产品 + 选项,例如,如果您知道 order_id 并且我想为每个产品显示图像?

这样做的主要原因是我想显示已订购产品的列表,每个产品都将有一个图像:

  1. option_value.image
  2. 或默认 product.image

目前我们通过以下方式获取产品:

SELECT *
FROM " . DB_PREFIX . "order_product op
LEFT JOIN " . DB_PREFIX . "product p ON (p.product_id = op.product_id)
WHERE order_id = '" . (int)$order_id . "'
4

1 回答 1

1

如果这是关于:

  • 订购的产品没有任何选项,让我们显示产品的图像
  • 或订购的产品只有一个选项(不能有更多选项),让我们显示该选项的图像

那么我会这样:

  1. 检索订购产品列表时,在每个订购产品的 foreach 循环中检查它是否设置了选项(每个产品一个查询)
  2. 如果设置了选项,则去获取选项的图像(另一个查询)
  3. 如果没有选项,我们将使用产品的图像(这应该已经在产品中加载)
  4. 处理已经设置的图像,如果没有则设置为 false
  5. 如果不为假,则在模板中显示图像

我们可以讨论是否

  1. 加载所有订购的产品并将其订购的选项与选项的图像连接起来
  2. 或仅加载产品然后查询订购的选项,然后查询选项的图像

更好。如果我现在看这两个,我会说第一个应该更好,因为只执行一个查询,但另一方面它加载了更多数据,其中可能很多只是NULLs(所有没有选项的产品放)。我想这取决于最终端点和通信速度:如果您的所有查询都需要一些时间来执行(连接/通信速度很慢),我会坚持使用第一个选项。但是如果连接速度在几毫秒内(这意味着 0-10),那么我会按照上面 5 个步骤中的描述选择第二个。

于 2013-05-17T08:38:04.533 回答