我的Laravel查询有问题。现在我使用这样的查询:$courses = Course::whereJsonContains('schedule->day', 1)->get();它不工作。我使用的是PostgreSQL 9.6,我的数据库和原始查询如下所示http://sqlfiddle.com/#!17/88fd2/1/0我想选择在第一天有课程安排的班级
$courses = Course::whereJsonContains('schedule->day', 1)->get();
js5cn81o1#
如果将列定义为schedule->day,MySQL假定这是一个整数数组。在本例中,它是一个对象数组,因此必须以父数组为目标,并在第二个参数中添加要查找的属性名。就像这样:
schedule->day
$courses = Course::whereJsonContains('schedule', ['day' => 1])->get();
w8rqjzmb2#
我解决了$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();
$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();
46qrfjad3#
我解决了
$products=ProductShop::active() ->whereJsonContains('tag', [['value' => "tampa"]])->get();
pvabu6sv4#
如果你不需要使用whereJsonContains来查询值уоu,只需使用常规的where查询,例如:
whereJsonContains
where
$courses = Course::where('schedule->day', 1)->get();`
如果你想检查Json中是否存在day:
day
$courses = Course::where('schedule->day', '!=', '')->get();
4条答案
按热度按时间js5cn81o1#
如果将列定义为
schedule->day
,MySQL假定这是一个整数数组。在本例中,它是一个对象数组,因此必须以父数组为目标,并在第二个参数中添加要查找的属性名。就像这样:
w8rqjzmb2#
我解决了
$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();
46qrfjad3#
我解决了
pvabu6sv4#
如果你不需要使用
whereJsonContains
来查询值уоu,只需使用常规的where
查询,例如:如果你想检查Json中是否存在
day
: