通过 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 聚合。