按 ID 获取 parent 个产品
Get parent of Product by ID
我正在尝试通过产品 ID 获取带有他 parent 的产品,我有以下代码:
/**
* @param string[] $ids
* @return ProductCollection|EntityCollection
*/
public function getProductsByIds(array $ids): ProductCollection
{
$criteria = new Criteria($ids);
$criteria->addAssociation('parent');
return $this->productRepository
->search($criteria, Context::createDefaultContext())
->getEntities();
}
但问题是当我 运行 这段代码时:
$products = $this->productService->getProductsByIds([$id]);
$product = $products->first();
dd($product->getParent());
我每次都null
。
如何获得产品 parent 以及在哪里可以阅读有关 'paths' 关联方法的更多信息?
当您执行您的方法时,您得到的是 EntityCollection,而不是单个实体。所以你应该使用下面的代码:
$products = $this->productService->getProductByIds([$id]);
foreach($products as $product) {
dd($product->getParent());
}
并确保您的产品具有 parents 当然:)
在 6.3.4.0 版本的 Shopware 上,我现在收到错误 400。
It is not possible to read the parent association directly. Please read the parents via a separate call over the repository
所以我删除了 Association 并创建了一个单独的方法来获取 one Product with a parent.
public function getProductById(?string $id): ?ProductEntity
{
if ($id === null) {
return null;
}
$products = $this->getProductsByIds([$id]);
$product = $products->first();
if ($product !== null && $product->getParentId() !== null) {
$parent = $this->getProductById($product->getParentId());
if ($parent !== null) {
$product->setParent($parent);
}
}
return $product;
}
我正在尝试通过产品 ID 获取带有他 parent 的产品,我有以下代码:
/**
* @param string[] $ids
* @return ProductCollection|EntityCollection
*/
public function getProductsByIds(array $ids): ProductCollection
{
$criteria = new Criteria($ids);
$criteria->addAssociation('parent');
return $this->productRepository
->search($criteria, Context::createDefaultContext())
->getEntities();
}
但问题是当我 运行 这段代码时:
$products = $this->productService->getProductsByIds([$id]);
$product = $products->first();
dd($product->getParent());
我每次都null
。
如何获得产品 parent 以及在哪里可以阅读有关 'paths' 关联方法的更多信息?
当您执行您的方法时,您得到的是 EntityCollection,而不是单个实体。所以你应该使用下面的代码:
$products = $this->productService->getProductByIds([$id]);
foreach($products as $product) {
dd($product->getParent());
}
并确保您的产品具有 parents 当然:)
在 6.3.4.0 版本的 Shopware 上,我现在收到错误 400。
It is not possible to read the parent association directly. Please read the parents via a separate call over the repository
所以我删除了 Association 并创建了一个单独的方法来获取 one Product with a parent.
public function getProductById(?string $id): ?ProductEntity
{
if ($id === null) {
return null;
}
$products = $this->getProductsByIds([$id]);
$product = $products->first();
if ($product !== null && $product->getParentId() !== null) {
$parent = $this->getProductById($product->getParentId());
if ($parent !== null) {
$product->setParent($parent);
}
}
return $product;
}