阅读(2101) (8)

Laravel 8 JSON Where 语句

2021-07-07 09:14:27 更新

Laravel 也支持查询 JSON 类型的字段(仅在对 JSON 类型支持的数据库上)。目前,本特性仅支持 MySQL 5.7、PostgreSQL、SQL Server 2016 以及 SQLite 3.9.0 (with the JSON1 extension)。使用 -> 操作符查询 JSON 数据:

$users = DB::table('users')
                ->where('options->language', 'en')
                ->get();

$users = DB::table('users')
                ->where('preferences->dining->meal', 'salad')
                ->get(); 

你也可以使用 whereJsonContains 来查询 JSON 数组 (在 SQLite 上不支持)

$users = DB::table('users')
                ->whereJsonContains('options->languages', 'en')
                ->get(); 

MySQL 和 PostgreSQL 的 whereJsonContains 可以支持多个值:

$users = DB::table('users')
                ->whereJsonContains('options->languages', ['en', 'de'])
                ->get(); 

你可以使用 whereJsonLength 来查询 JSON 数组的长度:

$users = DB::table('users')
                ->whereJsonLength('options->languages', 0)
                ->get();

$users = DB::table('users')
                ->whereJsonLength('options->languages', '>', 1)
                ->get();