通过 ID 获取 Shopware 6 实体的推荐方法是什么?
What is the recommended way to get a Shopware 6 entity by ID?
我有一个实体 ID,想通过存储库获取实体对象,目前我们这样做
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('id', $propertyId));
$property = $this->propertyGroupOptionRepository->search(
$criteria,
$this->context
)->first();
if($property) {
return $property->get('groupId');
}
有没有更好的方法,比如Laravel的find
方法?
至少可以在不创建等于过滤器的情况下使用 ID 过滤器创建条件。
shopware 核心是这样做的:
$product = $this->productRepository->search(new Criteria([$productId]), $context)->get($productId);
所以对于上面的例子,它将是
$property = $this->propertyGroupOptionRepository
->search(new Criteria([$propertyId]), $context)->get($propertyId);
正如您在自己的回答中已经提到的,您可以将 ID 作为参数传递给 Criteria 对象。
我建议$property = $this->propertyGroupOptionRepository->search(new Criteria([$propertyId]), $context)->first()
未实现查找方法,我认为永远不会,因为您可能想要加载使用一些关联 and/or 聚合。
我有一个实体 ID,想通过存储库获取实体对象,目前我们这样做
$criteria = new Criteria();
$criteria->addFilter(new EqualsFilter('id', $propertyId));
$property = $this->propertyGroupOptionRepository->search(
$criteria,
$this->context
)->first();
if($property) {
return $property->get('groupId');
}
有没有更好的方法,比如Laravel的find
方法?
至少可以在不创建等于过滤器的情况下使用 ID 过滤器创建条件。
shopware 核心是这样做的:
$product = $this->productRepository->search(new Criteria([$productId]), $context)->get($productId);
所以对于上面的例子,它将是
$property = $this->propertyGroupOptionRepository
->search(new Criteria([$propertyId]), $context)->get($propertyId);
正如您在自己的回答中已经提到的,您可以将 ID 作为参数传递给 Criteria 对象。
我建议$property = $this->propertyGroupOptionRepository->search(new Criteria([$propertyId]), $context)->first()
未实现查找方法,我认为永远不会,因为您可能想要加载使用一些关联 and/or 聚合。