Dan*_*iel 5 php mysql json laravel
在进行查询后,如何创建和回显格式化的JSON,如下所示:
{
"results": [
{
"user_id": "1",
"name": "Apple",
"address": "7538 N LA CHOLLA BLVD",
"city": "Palo Alto",
"state": "CA",
"latlon": [
-111.012654,
32.339807
],
},
{
"user_id": "2",
"name": "Microsoft",
"address": "75 S BWY STE 400",
"city": "Palo Alto",
"state": "CA",
"latlon": [
-73.764497,
41.031858
],
},
],
"meta": {
"page": 1,
"per_page": 10,
"count": 493,
"total_pages": 50
}
}
Run Code Online (Sandbox Code Playgroud)
这是我目前的查询:
public function getAgenciesJson() {
$agencies = DB::table('users')->where('type','a')->orWhere('type','l');
}
Run Code Online (Sandbox Code Playgroud)
考虑到我有一个像[-111.012654,32.339807]这样的"latlon"字段,还有一个"结果"标签和一个"元"标签,所以还没想出如何输出这样的JSON.
提前致谢
该方法存在:
->toJson()
参考: http: //laravel.com/docs/4.2/eloquent#converting-to-arrays-or-json
将您的 getAgenciesJson 更新为:
public function getAgenciesJson() {
return DB::table('users')->where('type','a')->orWhere('type','l')->toJson();
}
Run Code Online (Sandbox Code Playgroud)
然后你可以通过以下方式回显:
<?= SomeModel::getAgenciesJson(); ?>
Run Code Online (Sandbox Code Playgroud)
要修改列名称,您可以更新您的选择。以下是来自 Laravel 文档的示例:
$users = DB::table('users')->select('name as user_name')->get();
Run Code Online (Sandbox Code Playgroud)
这将是您正在寻找的内容的更完整实现的版本,减去列别名,因为您并没有真正提到它们是什么。
public function getAgenciesJson($page, $per_page = 10) {
$output = [
'results' => [],
'meta' => [],
];
// Get Results
$output['results'] = DB::table('users')->where('type','a')->orWhere('type','l')->take($per_page)->skip($per_page * ($page - 1))->get();
// Set Meta
$output['meta'] = [
'page' => $page,
'per_page' => $per_page,
'count' => DB::select('SELECT FOUND_ROWS()'),
'total_pages' => DB::table('users')->count() / $per_page
];
// Return
return json_encode($output);
}
Run Code Online (Sandbox Code Playgroud)
您的原始代码并未尝试获取或处理分页信息,但此示例涵盖了该信息,以便提供您表示想要返回的元数据。
不确定您是否希望 Count 成为当前结果集的数量或该表上所有记录的计数。如果您不想要当前设置,而是想要整个计数,您可以使用 DB::table('users')->count() 尽管我会将其分配给一个变量并使用它,而不是在元信息。
| 归档时间: |
|
| 查看次数: |
1529 次 |
| 最近记录: |