时间戳转换器

Symfony 查询生成器(多对多关系)

日期:2023-02-16     浏览:313    
【中文标题】Symfony 查询生成器(多对多关系)【英文标题】:Symfony Query Builder (Many to many relation) 【发布时间】:2021-12-18 13:38:45 【问题描述】:

我对 QueryBuilder 有疑问。 我有两个实体:产品,属性,它们是多对多关系(每个产品可以有很多属性,每个属性可以有很多产品) 我创建产品存储库函数 findByAttributes()

public function findByAttributes($attributes)

    $qb = $this->createQueryBuilder('p')
        ->join('p.attributes', 'a')
        ->where('a.slug = :slug1 OR a.slug = :slug2')
        ->setParameter('slug1', 'red')
        ->setParameter('slug2', 'blue')
    ;

    return $qb->getQuery()->getResult();

当我使用 OR 时,它工作正常,但是当我切换到 AND 时,结果为空。 使用 AND 我只想选择同时具有这两种属性的产品。

我哪里错了?

Tnx

【问题讨论】:

a.slug不能同时等于两个不同的字符串,你确定这里没有问题吗? 嗯...我只想选择具有这两种属性的产品 a.slug 是什么?一个字符串?数组 ?你的 where 条件是:a.slug = 'red' 和 a.slug = 'blue',怎么可能同时出现? a.slug 是一个字符串。每个产品不能有很多属性。 那你没看到这里的问题吗?您希望能够检查 a.slug 是否同时等于两个不同的字符串。你说你想只选择具有这两种属性的产品,这怎么可能?是否有多个 slug 属性? 【参考方案1】:

我明白了!

public function findByAttributes(array $attributes)

    $qb = $this->createQueryBuilder('p');

    foreach ($attributes as $i => $attribute) 
        $qb->join('p.attributes', 'a'.$i)
           ->andWhere('a'.$i.'.slug = :slug'.$i.'')
           ->setParameter('slug'.$i, $attribute);
    

    return $qb->getQuery()->getResult();

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。

相关文章

多对多计数大于的 Doctrine 查询生成器

{】多对多计数大于的Doctrine查询生成器【英文标题】:DoctrineQueryBuilderWhereCountofManyToManyisgreaterthan【发布时间】:2014-06-2318:58:24【问题描述】:我正在使用DoctrineQueryBuilder,并且有一个非常具体的要求。我在我的实体中使用ManyToMany...}

如何直接填充由 EF Core 生成的多对多关系连接表?

{】如何直接填充由EFCore生成的多对多关系连接表?【英文标题】:HowcanIdirectlyfilljointablegeneratedbyEFCoreformany-to-manyrelationship?【发布时间】:2021-04-0703:54:58【问题描述】:我有这些实体:publicclassBookpublicintIdget;set;publicstringTitleget;set;...}

多对多的 Django Inline 生成重复查询

{】多对多的DjangoInline生成重复查询【英文标题】:DjangoInlineforManyToManygenerateduplicatequeries【发布时间】:2017-04-0115:17:15【问题描述】:我的django管理员遇到了一些重大的性能问题。大量重复查询取决于我有多少内联。models.pyclassSet...}

具有多对多关系的 Symfony 5 对象序列化超时

{】具有多对多关系的Symfony5对象序列化超时【英文标题】:Symfony5ObjectSerializationwithManyToManyRelationTimesOut【发布时间】:2021-02-1916:09:33【问题描述】:在我的Symfony5应用程序中,我有一个实体类Product,它有两个属性$categories和$bundles...}

Symfony2 从具有多对多关系的倒置实体中获取对象

{】Symfony2从具有多对多关系的倒置实体中获取对象【英文标题】:Symfony2getobjectfrominvertedentitywithManyToManyrelation【发布时间】:2014-05-0901:49:48【问题描述】:我的Doctrine实体关系遇到问题。事情是这样的:我有2个实体:文章和类别...}

Symfony2 多对多双向关系 - 如何手动持久化

{】Symfony2多对多双向关系-如何手动持久化【英文标题】:Symfony2ManytoManybidirectionalrelationship-Howtopersistmanually【发布时间】:2016-11-1308:26:39【问题描述】:我正在处理一个带有2个输入字段和一个提交按钮的表单。第一个字段是一个...}

CheckboxList、MVC、多对多关系

{】CheckboxList、MVC、多对多关系【英文标题】:CheckboxList,MVC,Many-To-ManyRelationship【发布时间】:2011-03-0714:08:55【问题描述】:我有一个Request类和一个具有多对多关系的Building类。一个请求可以与1个或多个建筑物相关联。我想利用Edi...}

Laravel 多对多关系查询

{】Laravel多对多关系查询【英文标题】:Laravelmany-to-manyrelationshipquery【发布时间】:2018-11-0209:24:59【问题描述】:我正在构建一个Laravel应用程序,其中包含一个用户表和一个活动表,以及通过一个名为assignments的数据透视表实现...}

如何查询多对多关系sequelize?

{】如何查询多对多关系sequelize?【英文标题】:Howtoquerymanytomanyrelationshipsequelize?【发布时间】:2016-12-1521:05:03【问题描述】:表有多对多的关系,由一个订单表连接。出口-->订单我想获取今天订单的奥特莱斯列表。所以这里有...}

symfony2 多对多奏鸣曲 admin model_list

{】symfony2多对多奏鸣曲adminmodel_list【英文标题】:symfony2many-to-manysonataadminmodel_list【发布时间】:2014-04-0115:30:53【问题描述】:我正在使用最新的Symfony2和SonataAdmin来维护我的网站,这是我的问题:我有两个实体:Shop和Discount。一...}

Copyright ©2021 时间戳转换器 小常识 114pp | 陕ICP备18005036号