我有带有json列“ options”的表。 例子:
{"language":"en" }
当我查询时,可以:
DB::table('users')->where('options->language', 'en')->get();
但是如果我有数字键:
{"221":"en" }
我得到空数组:
DB::table('users')->where('options->221', 'en')->get();
我如何获得真实的查询? Laravel 5.2
答案 0 :(得分:0)
尝试使用 <amp-web-push-widget visibility="unsubscribed" layout="fixed" width="245" height="45">
<!-- Custom banner goes here... -->
</amp-web-push-widget>
方法。就您而言:
whereJsonContains
答案 1 :(得分:0)
如果您将Laravel版本升级到5.6或更高版本,则->whereJsonContains()
将可用。
如果您不希望这样做,可以使用whereRaw
查询来完成。确切的实现取决于您拥有的DBMS:
->whereRaw("JSON_VALUE(options, '$.221') = ?", ['en'])
->whereRaw("JSON_CONTAINS(options, 'en', '$.221') = 1")
答案 2 :(得分:0)
此问题已在Laravel的更高版本中修复。
在Laravel 5.2中,您可以使用原始表达式:
DB::table('users')->whereRaw('`options`->\'$."221"\' = ?', ['en'])->get();