在laravel中查询Json(Array)列

时间:2017-11-28 12:57:18

标签: arrays json postgresql laravel eloquent

我想跟随代码捕捉:

DB::table('tests')->whereIn('words', ['school','running'])->get();

使用postgresql和'字的类型是jsonb 在单词表数据中,如下所示。

['someword','someword2', .... , 'somewordn']

在原始查询中,我可以这样做。

SELECT * FROM tests WHERE words ?| array['school','running];

我想用laravel Eloquent来做这件事。

1 个答案:

答案 0 :(得分:0)

Eloquent在查询中不支持jsonb。解决此问题的最佳方法是使用whereRaw()方法。但是,此方法使用PDO,其中?是表示参数的受限字符。

幸运的是,每个操作员只是功能的快捷方式,您可以在此处查看http://sqlfiddle.com/#!17/9eecb/6498,这意味着?|jsonb_exists_any()相同,这是您可以使用的在您的查询中。

没有测试过,但这样的事情应该有效:

DB::table('tests')->whereRaw("jsonb_exists_any(words, ['school','running'])")->get();