php - SQL 从 Magento 获取订单项目?
问题描述
我需要从数据库中获取要运送的已订购物理物品的列表。清单需要包括名称、sku、数量、价格、重量和尺寸。
如果不使用 Magento 自己的框架组件,我们怎么能做到这一点。
问题在于,如果产品包含选项,它会按不同的产品类型(简单、捆绑、可配置等)和不同的产品 ID 在表中多次出现。
$items = array();
$sql = (
"SELECT oi.name, oi.sku, oi.qty_ordered, oi.price, oi.weight
FROM {$db->prefix}sales_flat_order_item oi
WHERE oi.order_id = ". (int)$order_entity_id .";"
);
if ($result = $mysqli->query($sql)) {
while ($row = $result->fetch_assoc()) {
$items[] = [
'name' => $row['name'],
'sku' => $row['sku'],
'quantity' => (float)$row['qty_ordered'],
'unit_price' => (float)$row['price'],
'unit_weight' => (float)$row['weight'],
//'unit_length' => (float)$row['length'], // Not present?
//'unit_width' => (float)$row['width'], // Not present?
//'unit_height' => (float)$row['height'], // Not present?
];
}
$result->close();
}
如果我通过过滤器AND product_type = 'simple'
只获取简单的产品,它们不包含价格。
解决方案
如果有一个可配置产品有多个相同价格的简单产品,则价格将只保存在可配置产品中。所以你不应该使用“简单产品”过滤器。尝试以下查询,
SELECT orders.increment_id AS increment_id,
orders.status AS order_status,
orders.customer_email AS customer_email,
orders.coupon_code AS coupon_code,
items.name AS item_name,
items.item_id AS order_item_id,
items.sku AS item_sku,
items.base_price AS item_base_price,
items.price_incl_tax AS item_price,
items.qty_ordered AS qty_ordered,
items.product_id AS product_id,
items.weight AS Weight
FROM sales_flat_order_item AS items
LEFT JOIN sales_flat_order AS orders
ON items.order_id = orders.entity_id
WHERE
orders.entity_id = 18229
这为您提供了简单和可配置产品的详细信息,您可以使用条件(if / else)来归档内容。
推荐阅读
- sql - 审查超过 3 个月和最近 30 天内的脚本
- filehelpers - 使用动态列导入 CSV
- android - 在 Kotlin 中忽略 ListPreference 更改
- pytorch - ret = torch._C._nn.nll_loss2d 中的错误(输入,目标,权重,_Reduction.get_enum(reduction),ignore_index)
- c - 计算 valgrind 错误而不报告它们
- jquery - 未捕获的类型错误:$(...).sidebar 不是函数
- php - 获取列的表名/实体
- pytorch - 在表格数据上创建 fastai 模型后如何对新数据进行评分?
- vue.js - Vuejs如何以这样的方式将一个数组分配给另一个数组,使得两个数组对更改没有反应
- javascript - Javascript 使用变量值作为父对象名称