Postgresql有一些使用JSON数据的功能和操作。正如它在postgresql site中所描述的那样,可以将JSON数据保存在列中,并使用 - > 运算符获取JSON数组元素。一切都还可以 普通的PHP,但我想在Laravel框架上使用它,特别是Eloquent或Query Builder。
Laravel中是否有此功能的标准解决方案?我开发了像bellow代码一样的简单sql,它可以工作,但我正在寻找更好的解决方案。
$host = env('DB_HOST', 'localhost');
$database = env('DB_DATABASE', 'aaa');
$user = env('DB_USERNAME', '22222');
$pass = env('DB_PASSWORD', '11111');
$table = 'table';
$column = 'json';
$connection = pg_connect("host=$host dbname=$database user=$user password=$pass");
$result = pg_fetch_all(pg_query($connection, "SELECT $column->>'name' FROM \"$table\" "));
答案 0 :(得分:1)
从Laravel 5.3开始,这是可能的,但仅适用于MySQL。版本5.6也支持Postgress。假设您具有以下用户,其配置文件为JSON数据类型:
"id": 1,
"name": "Mahmood",
"profile": {
"bio": "Lorem ipsum",
"phone": "1234"
}
您可以这样查询:
$phone = DB::table('users')
->where('profile->phone', '1234')
->get();
参考:https://mattstauffer.co/blog/new-json-column-where-and-update-syntax-in-laravel-5-3
答案 1 :(得分:0)
Laravel目前不支持此功能。您可以在Laravel here中看到Postgresql支持独有的SQL语法。
然而,您可以将raw statements与Eloquent一起使用,它可以处理您需要的内容。