如何通过Shopware 6 Admin API限制关联查询结果数量
如何限制Shopware关联查询的结果数量?
在Shopware中查询cms_page并关联分类(categories)等实体时,若想仅获取每个页面关联的前N个实体,不能直接在主Criteria上调用setLimit,否则会限制整个cms_page的查询结果数。
正确的做法是为关联实体单独设置查询条件,有两种实现方式:
方式一:创建独立的子Criteria
为关联的categories创建单独的Criteria实例,指定分页参数(第1页,每页5条),再通过addAssociation的第二个参数传入:
const criteria = new Criteria(this.page, this.limit); // 为关联分类创建子查询条件,仅取前5个 const categorySubCriteria = new Criteria(1, 5); criteria.addAssociation('categories', categorySubCriteria);
方式二:链式调用修改关联条件
先添加关联,再通过getAssociation获取该关联的查询条件,单独设置limit:
const criteria = new Criteria(this.page, this.limit); criteria.addAssociation('categories') .getAssociation('categories') .setLimit(5);
这两种方式都只会限制categories关联实体的返回数量,不会影响主查询中cms_page的结果条数,实现精准控制关联实体的查询范围。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

