0

当使用以下代码下订单时,我目前正在尝试在产品中获取自定义字段“ emakers_custom_field_warehouse_name ”。

这是我的搜索请求:

$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('id', $orderId));
$criteria->addAssociations([
     'deliveries.shippingOrderAddress.salutation',
     'deliveries.shippingOrderAddress.country',
     'orderCustomer.customer.group',
     'lineItems.product.translations',
]);
$orderObject = $this->orderRepository->search($criteria), Context::createDefaultContext())->first();

这是我序列化 $orderObject->getLineItems->first()->getProduct() 时得到的结果: https ://gist.github.com/Youmar0504/8b53632fbc1b43c11769711519a74a17

我已经尝试过并给了我空的结果:

$orderObject->getLineItems->first()->getProduct()->getCustomFields()

TBH,我不知道还能尝试什么。看起来(如果您在要点中搜索 customField 的名称)它位于产品翻译实体中。但是,如果我执行 $orderObject->getLineItems->first()->getProduct()->getProductTranslations(),我会收到一条错误消息“尝试调用类“Shopware\Core\Content\ 的名为“getProductTranslations”的未定义方法产品\产品实体

还有什么我可以尝试的吗?

4

1 回答 1

0

发现这取决于语言。刚刚在标准中替换: 'lineItems.product.translations''lineItems.product.default'我现在很容易通过执行以下操作获得customFields:

$orderObject->getLineItems->first()->getProduct()->getCustomFields()
于 2021-12-22T13:33:45.463 回答