首页 > 解决方案 > 如何在 Shopware 6 中建立关联?

问题描述

基本上我想要这个 SQL 返回的相同结果:

SELECT id FROM property_group_option opt
    LEFT JOIN property_group_option_translation tra 
        ON opt.id = tra.property_group_option_id
    WHERE opt.property_group_id = <id> AND tra.name = "<name>"

Shopware 文档中描述的方法似乎没有得到正确的结果。我尝试了以下方法:

$criteria = (new Criteria())
        ->addFilter(new EqualsFilter('property_group_id', $propertyGroupId))
        ->getAssociation('property_group_option_translation')
            ->addFilter(new EqualsFilter('name', $value));

$result = $this->propertyGroupOptionRepository->search($criteria, Context::createDefaultContext())->first()->getId();

我确实找到了一种解决方法,它似乎不是要走的路(也不是最好的表现),但它确实返回了正确的结果。

$criteria = (new Criteria());
$criteria->addFilter(new EqualsFilter('name', $value));
$criteria->getAssociation('property_group_option')
    ->addFilter(new EqualsFilter('groupId', $propertyGroupId));

$translation = $this->propertyGroupOptionTranslationRepository->search($criteria, Context::createDefaultContext())->first()

if($translation !== null) {
    $criteria = (new Criteria([$translation->get('propertyGroupOptionId')]));
    $result = $this->propertyGroupOptionRepository->search($criteria, Context::createDefaultContext())->first()->getId();
}

有没有合适的解决方案?

标签: phpsymfonyshopwaredbal

解决方案


您正在使用表名。尝试改用型号名称。


推荐阅读