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

如何同时对Supabase主表与关联表使用ilike过滤?

Supabase 联表模糊匹配实现方案

你可以利用Supabase JS客户端的.or()方法,结合关联表字段的过滤语法,单次请求实现同时匹配product_name或brand_name的模糊查询,完整代码如下:

const searchText = "要搜索的文本";
const { data, error } = await supabase
  .from('foods')
  .select(`
    id, 
    product_name, 
    brands(brand_name),
    barcode,
    serving_factor,
    units(unit),
    calories, 
    fat,
    saturated_fat,
    carbohydrates,
    sugar,
    protein,
    salt,
    image,
    vegan,
    lactose_free,
    gluten_free,
    source
  `)
  .or(`product_name.ilike.%${searchText}%,brands.brand_name.ilike.%${searchText}%`);

关键说明:

  • 使用.or()方法组合两个过滤条件,用逗号分隔不同条件
  • 关联表字段的过滤语法为关联表名.字段名,这里即brands.brand_name
  • ilike表示不区分大小写的模糊匹配,%作为通配符匹配任意字符
  • 如果需要区分大小写,将ilike替换为like即可

这段代码等效于你期望的SQL(扩展为同时匹配两个字段的版本):

SELECT 
  foods.id, 
  foods.product_name, 
  brands.brand_name,
  foods.barcode,
  foods.serving_factor,
  units.unit,
  foods.calories, 
  foods.fat,
  foods.saturated_fat,
  foods.carbohydrates,
  foods.sugar,
  foods.protein,
  foods.salt,
  foods.image,
  foods.vegan,
  foods.lactose_free,
  foods.gluten_free,
  foods.source
FROM foods
JOIN brands ON foods.brand = brands.id
WHERE foods.product_name ILIKE '%搜索文本%' OR brands.brand_name ILIKE '%搜索文本%';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 12:24:16