gpt4 book ai didi

mysql - 从多属性搜索的条件中删除搜索字符串/查询属性。从 where 条件中删除空白参数的空白属性

转载 作者:可可西里 更新时间:2023-11-01 08:03:43 25 4
gpt4 key购买 nike

我想从具有多个参数的产品表中搜索产品,但我只想搜索那些不为空的参数。我正在为此使用此查询。

@search_result = Product.where(:status_id=>1,:brand_id => @brand_id,   :product_name_id => @product_name_id, :size_id => @product_size_id,  :product_type_id => @product_type_id )

我想要这样如果@product_name_id.blank?那么查询应该是这样的

@search_result = Product.where(:status_id=>1,:brand_id => @brand_id, :size_id => @product_size_id,  :product_type_id => @product_type_id )

@product_name_id 应该从查询中删除。我也试过了

@search_result = Product.find_by_sql [
"SELECT * FROM products WHERE status_id = ? AND brand_id > ? AND product_name_id > ? AND size_id > ? AND product_type_id > ? AND grade > ? ",
"#{1}",
"#{ unless @brand_id.blank?
@brand_id
end

}",
"#{ unless @product_name_id.blank?
@product_name_id
end

}",
"#{ unless @product_size_id.blank?
@product_size_id
end

}",
"#{ unless @product_type_id.blank?
@product_type_id
end

}",
"#{ unless @grade.blank?
@grade
end

}"
]

但它没有给出我想要的结果,我的意思是返回错误的结果。

最佳答案

我现在的诀窍是使用强参数

@search_result =Product.where(search_params)

def search_params
my_where_params = params.permit(:product_type_id, :brand_id,:product_name_id,:grade,:size_id).select {|k,v| v.present?}
end

它删除了空白参数的属性。

关于mysql - 从多属性搜索的条件中删除搜索字符串/查询属性。从 where 条件中删除空白参数的空白属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39805522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com