Laravel 查询 JSON 用 whereIn 来查询可以吗?

 ->whereIn('details->series_name',[1,2,3])

但是我查询出来的数据不准确

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

@fybbbb 我用这个拼接 解决了这个问题 达到了我的预期 可能以后可以直接用数组 whereJsonContains 最新版本才支持 https://github.com/laravel/framework/pull/...

->where(function ($query) use ($SearchArray) {
                foreach ($SearchArray as  $keyword){
                    $query ->orWhere(function ($query) use ($keyword) {
                           $query->whereJsonContains('details->search', $keyword);
                    });
                }
 })

这始终不便于查询 我得重新设计我的数据库

5年前 评论
讨论数量: 11

第一个参数是数据库字段吧

5年前 评论

@fybbbb 是的 因为我这个表单有不固定的字段 所以我是以json保存在数据库中的 我以为whereIn可以支持这种查询 看样子是不可以的

5年前 评论

@fybbbb 等于是可以查询的 如果是 > < in 这种查询 就不支持

5年前 评论

如果你保存的是json,那这样就不对了,whereIn验证的是column的值,在数组内。可以看文档

5年前 评论

@fybbbb 嗯 是的 现在只能想办法来解决这个问题

5年前 评论

@回思恋莹 你可以尝试把转json后,用diff()

5年前 评论

@fybbbb 具体怎么写这个sql呢? 可以给个提示吗 万分感谢

5年前 评论

可以看下文档,集合->可用方法

5年前 评论

@fybbbb 感谢你的帮助 我刚查了下 最新版本有 whereJsonContains 这个方法 但是不支持数组 我只有用sql拼接来解决这个问题

5年前 评论

@fybbbb 我用这个拼接 解决了这个问题 达到了我的预期 可能以后可以直接用数组 whereJsonContains 最新版本才支持 https://github.com/laravel/framework/pull/...

->where(function ($query) use ($SearchArray) {
                foreach ($SearchArray as  $keyword){
                    $query ->orWhere(function ($query) use ($keyword) {
                           $query->whereJsonContains('details->search', $keyword);
                    });
                }
 })

这始终不便于查询 我得重新设计我的数据库

5年前 评论

@回思恋莹 ok,我还没用过这个,哈哈

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!