You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel Builder中按关联数量过滤符合条件的产品模型

获取有效产品的SQL查询方案

可以通过以下两种SQL查询方式直接从数据库层面筛选出符合条件的有效产品,无需取出全部数据后再用代码过滤:

方法一:关联表后分组统计

通过JOIN关联三张表,再用GROUP BY和HAVING子句统计并过滤符合数量要求的产品:

SELECT p.*
FROM products p
JOIN product_images pi ON p.product_id = pi.product_id
JOIN variants v ON p.product_id = v.product_id
GROUP BY p.product_id
HAVING COUNT(DISTINCT pi.image_id) >= 4 
   AND COUNT(DISTINCT v.variant_id) >= 3;
  • 用DISTINCT是为了避免关联时产生笛卡尔积导致重复统计同一张图片或变体;
  • 替换product_id、image_id、variant_id为你实际使用的主键/外键字段名即可。

方法二:子查询预统计数量

先通过子查询分别筛选出满足图片、变体数量要求的产品ID,再与主表关联获取完整产品信息,这种方式在数据量大时性能更优:

SELECT p.*
FROM products p
JOIN (
    SELECT product_id, COUNT(image_id) AS image_count
    FROM product_images
    GROUP BY product_id
    HAVING image_count >= 4
) pi_count ON p.product_id = pi_count.product_id
JOIN (
    SELECT product_id, COUNT(variant_id) AS variant_count
    FROM variants
    GROUP BY product_id
    HAVING variant_count >= 3
) v_count ON p.product_id = v_count.product_id;
  • 子查询先完成数量筛选,只保留符合条件的产品关联关系,减少主查询的计算量。

内容的提问来源于stack exchange,提问作者Melly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 04:45:42