Mysql 查询数组字段中的where值
我在Rails 5的mysql数据库中有一个名为“User”的表 在该表中,有一个名为“professions”的数组字段 我想找到所有拥有包含值“writer”的专业数组的用户 我有以下记录:Mysql 查询数组字段中的where值,mysql,sql,ruby-on-rails,ruby-on-rails-5,Mysql,Sql,Ruby On Rails,Ruby On Rails 5,我在Rails 5的mysql数据库中有一个名为“User”的表 在该表中,有一个名为“professions”的数组字段 我想找到所有拥有包含值“writer”的专业数组的用户 我有以下记录: => #<User id: 39806, email: "user@gmail.com", professions: {"model"=>nil, "writer"=>nil, "graphic_producer"=>nil}> 您需要序列化查询以使其工作您需要序列
=> #<User id: 39806, email: "user@gmail.com", professions: {"model"=>nil, "writer"=>nil, "graphic_producer"=>nil}>
您需要序列化查询以使其工作您需要序列化查询以使其工作如何存储该数组?MySQL支持数组列吗?你在使用JSON吗?可能
序列化?@muistooshort该字段为文本类型。没有JsonSo您在model类中使用序列化将YAML存储在文本列中?您能更改模式吗?@muistooshort用户模型中有一个序列化:professions。更改模式?你的意思是改变字段的类型吗?我没有使用mysql,但是如果你的列是文本,你会尝试这个User.where(“像这样的职业?”,“%#{search\u params}%”
search\u params在你的例子中可以是“writer'=>
,但您需要检查“专业”列。您如何存储该数组?MySQL支持数组列吗?你在使用JSON吗?可能序列化?@muistooshort该字段为文本类型。没有JsonSo您在model类中使用序列化将YAML存储在文本列中?您能更改模式吗?@muistooshort用户模型中有一个序列化:professions。更改模式?你的意思是改变字段的类型吗?我没有使用mysql,但是如果你的列是文本,你会尝试这个用户吗。在哪里(“像什么职业?”,“%{search\u params}%”
搜索参数在你的情况下可以是“writer”=>
,但是你需要检查职业列。
1)User.where("['writer'] = ANY (user.professions)")
2)User.where(:professions.in =>['writer'] )