关联在数据库中,但无法通过 DAL 检索。将检索空的关联数组
Association is in database, but can't be retrieved via DAL. Will retrieve empty array of associations
我正在学习高级开发人员教程 (https://docs.shopware.com/en/shopware-platform-dev-en/how-to/indepth-guide-bundle)。
目前我在第 7 步,根据教程,我到目前为止所做的应该有效。
但事实并非如此。
在数据库中它显示了关联,但我无法从存储库中检索它们。
您必须将关联添加到条件中。
$criteria->addAssociation("name_of_association")
没有它,关联将无效。
好吧,原来我不小心切换了两个参数。当我正确设置它们时,它会正常工作。
<?php declare(strict_types=1);
namespace Swag\BundleExample\Core\Content\Product;
use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\Inherited;
use Shopware\Core\Framework\DataAbstractionLayer\Field\ManyToManyAssociationField;
use Shopware\Core\Framework\DataAbstractionLayer\FieldCollection;
use Swag\BundleExample\Core\Content\Bundle\Aggregate\BundleProduct\BundleProductDefinition;
use Swag\BundleExample\Core\Content\Bundle\BundleDefinition;
class ProductExtension extends EntityExtension
{
public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new ManyToManyAssociationField(
'bundles',
BundleDefinition::class,
BundleProductDefinition::class,
'product_id',
'bundle_id'
))->addFlags(new Inherited())
);
}
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
我说的是 'product_id' 和 'bundle_id'。在我的例子中,我将 'product_id' 作为最后一个参数。
我正在学习高级开发人员教程 (https://docs.shopware.com/en/shopware-platform-dev-en/how-to/indepth-guide-bundle)。
目前我在第 7 步,根据教程,我到目前为止所做的应该有效。
但事实并非如此。
在数据库中它显示了关联,但我无法从存储库中检索它们。
您必须将关联添加到条件中。
$criteria->addAssociation("name_of_association")
没有它,关联将无效。
好吧,原来我不小心切换了两个参数。当我正确设置它们时,它会正常工作。
<?php declare(strict_types=1);
namespace Swag\BundleExample\Core\Content\Product;
use Shopware\Core\Content\Product\ProductDefinition;
use Shopware\Core\Framework\DataAbstractionLayer\EntityExtension;
use Shopware\Core\Framework\DataAbstractionLayer\Field\Flag\Inherited;
use Shopware\Core\Framework\DataAbstractionLayer\Field\ManyToManyAssociationField;
use Shopware\Core\Framework\DataAbstractionLayer\FieldCollection;
use Swag\BundleExample\Core\Content\Bundle\Aggregate\BundleProduct\BundleProductDefinition;
use Swag\BundleExample\Core\Content\Bundle\BundleDefinition;
class ProductExtension extends EntityExtension
{
public function extendFields(FieldCollection $collection): void
{
$collection->add(
(new ManyToManyAssociationField(
'bundles',
BundleDefinition::class,
BundleProductDefinition::class,
'product_id',
'bundle_id'
))->addFlags(new Inherited())
);
}
public function getDefinitionClass(): string
{
return ProductDefinition::class;
}
}
我说的是 'product_id' 和 'bundle_id'。在我的例子中,我将 'product_id' 作为最后一个参数。