如何同时对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
相关产品推荐
相关产品推荐

