我想跟随代码捕捉:
DB::table('tests')->whereIn('words', ['school','running'])->get();
使用postgresql和'字的类型是jsonb 在单词表数据中,如下所示。
['someword','someword2', .... , 'somewordn']
在原始查询中,我可以这样做。
SELECT * FROM tests WHERE words ?| array['school','running];
我想用laravel Eloquent来做这件事。
答案 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();