php 我的whereJsonContains不工作(Laravel 5.8)

qq24tv8q  于 2023-05-05  发布在  PHP
关注(0)|答案(4)|浏览(213)

我的Laravel查询有问题。
现在我使用这样的查询:
$courses = Course::whereJsonContains('schedule->day', 1)->get();
它不工作。
我使用的是PostgreSQL 9.6,我的数据库和原始查询如下所示
http://sqlfiddle.com/#!17/88fd2/1/0
我想选择在第一天有课程安排的班级

js5cn81o

js5cn81o1#

如果将列定义为schedule->day,MySQL假定这是一个整数数组。在本例中,它是一个对象数组,因此必须以父数组为目标,并在第二个参数中添加要查找的属性名。
就像这样:

$courses = Course::whereJsonContains('schedule', ['day' => 1])->get();
w8rqjzmb

w8rqjzmb2#

我解决了
$courses = Course::whereJsonContains('schedule', [['day' => '1']])->get();

46qrfjad

46qrfjad3#

我解决了

$products=ProductShop::active()
          ->whereJsonContains('tag', [['value' => "tampa"]])->get();
pvabu6sv

pvabu6sv4#

如果你不需要使用whereJsonContains来查询值уоu,只需使用常规的where查询,例如:

$courses = Course::where('schedule->day', 1)->get();`

如果你想检查Json中是否存在day

$courses = Course::where('schedule->day', '!=', '')->get();

相关问题