我的 laravel 查询有问题。现在我使用这样的查询:$courses = Course::whereJsonContains('schedule->day', 1)->get();它不起作用。我正在使用 postgreSql 9.6,我的数据库和原始查询看起来像这样http://sqlfiddle.com/#!17/88fd2/1/0我想选择一天有时间表的班级= 1
4 回答

ibeautiful
TA贡献1993条经验 获得超6个赞
如果将列定义为schedule->day
,MySQL 假定这是一个整数数组。在您的情况下,它是一个对象数组,因此您必须定位父数组并在第二个参数中添加您要查找的属性名称。
像这样:
$courses = Course::whereJsonContains('schedule', ['day' => 1])->get();

幕布斯6054654
TA贡献1876条经验 获得超7个赞
我解决了
$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();

HUWWW
TA贡献1874条经验 获得超12个赞
如果您正在查询您不需要使用的值whereJsonContains
,只需使用常规where
查询,例如:
$courses = Course::where('schedule->day', 1)->get();`
如果要检查day
Json 中是否存在,请使用whereJsonLength
例如:
$courses = Course::whereJsonLength('schedule->day', '>', 0)->get();

莫回无
TA贡献1865条经验 获得超7个赞
我解决了
$products=ProductShop::active() ->whereJsonContains('tag', [['value' => "tampa"]])->get();
- 4 回答
- 0 关注
- 310 浏览
添加回答
举报
0/150
提交
取消