Mysql 哪里查询不起作用

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

我有一个名为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?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
。我会尝试一下