php - 如何在 laravel 5.7 中获取 json 值?
问题描述
我在数据库中有两个表,package
并且categories
.
package
有一个字段category_id
包含此表单中的数据,并以复选框的形式["1","11"]
显示categories
数据。
package
现在,我想要所有数据来自category_id
等于categories
id
.
这是我的代码:
public function archive_packages(Request $request, $slug){
$title='Archive Packages';
$para='';
$slugs='archive-packages';
$categoryRow = Category::where('slug',$slug)->first();
$categoryID = $categoryRow->id;
$package = Packages::whereRaw('JSON_CONTAINS(category_id, \'["11"]\')')->get();
dd($package);
return view('pages.archive-packages',compact('title','para','slugs','package'));
}
我收到以下错误:
SQLSTATE [42000]:语法错误或访问冲突:1305 FUNCTION
pre.JSON_CONTAINS 不存在(SQL:select * from `packages` where
JSON_CONTAINS(category_id, '["11"]'))
解决方案
有一个 laravel 方法可以做到这一点,更多细节在这里
所以请尝试:
Packages::whereJsonContains('category_id', '11')->get();
如果您的 mysql 版本不支持json_contains
且无法升级,请尝试以下查询:
Packages::where('category_id', 'like', '%"11"%');
推荐阅读
- r - equivalent of melt+reshape that splits on column names
- git - 将一个分支合并到另一个分支的文件夹中
- java - 如何通过java中的rest服务获取用户ip
- powershell - Powershell 重用 Get-Help -showwindow
- c# - c#如何初始化或设置默认构造函数值到类的注入依赖项
- entity-framework - EF 动态包含无法按预期工作
- swift - 从 iOS 13 Beta 3 开始,我的应用只显示黑色窗口
- javascript - 如何使用 useState 然后在 React 中执行具有最新状态的函数?
- jquery - 无法在 ajax 中使用表单序列化上传文件
- python - 按字母顺序排列,然后在嵌套列表中拆分字符