Mysql 哪里查询不起作用
我有一个名为Toys的表,其中包含Mysql 哪里查询不起作用,mysql,ruby-on-rails,rails-activerecord,grape-api,Mysql,Ruby On Rails,Rails Activerecord,Grape Api,我有一个名为Toys的表,其中包含toy\u id、company\u id、store\u id、name和description列 我正在尝试对表执行如下查询: toys=@company.toys.where(“store\u id=”和(name LIKE?或description LIKE?)、params[:store\u id]、params[:query]、params[:query] 如果用户转到以下url:https://myapp.com/api/toys/search?s
toy\u id、company\u id、store\u id、name和description列
我正在尝试对表执行如下查询:
toys=@company.toys.where(“store\u id=”和(name LIKE?或description LIKE?)、params[:store\u id]、params[:query]、params[:query]
如果用户转到以下url:https://myapp.com/api/toys/search?store_id=8&query=“机器人”
它将返回所有由store\u id
表示的商店玩具,这些玩具具有名称
或描述
如robot
。每次它都返回空JSON。不确切地知道为什么?我们将感谢任何帮助或指导。使用Arel样式:
companies = Company.arel_table
toys = @company.where(store_id: params[:store_id]).where(companies[:name].matches(params[:query]).or(companies[:description].matches(params[:query])))
甚至:
companies = Company.arel_table
search_query = companies[:name].matches(params[:query]).or(companies[:description].matches(params[:query]))
toys = @company.where(store_id: params[:store_id]).where(search_query)
参考@PardeepDhingra在原始问题中的第一条评论
toys = @company.toys.where("store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:store_id], "%#{params[:query]}%", "%#{params[:query]}%"
因为你有一张叫做玩具的桌子,你可以试试这样的东西:
@toys = Toy.where("company_id = ? AND store_id = ? AND (name LIKE ? OR description LIKE ?)", params[:company_id], params[:store_id], params[:query], params[:query]
我希望它能帮助你!试试这个
toys=@company.toys.where(“store_id=”和(name LIKE?或description LIKE?)、params[:store_id]、“%#{params[:query]}%”、“%#{params[:query]}%”
。如果我没有弄错的话,这很容易受到SQL注入的攻击。?
中的where将处理sanitizing@axlj他收到的是param query,而不是name或description。“如果您查看url,我希望使用:query
来匹配toy.description
和toy.name
。我会尝试一下