【发布时间】:2014-05-15 16:07:12
【问题描述】:
我试图弄清楚如何创建一个嵌套的 JSON 对象,如下所示:
company: "Company 1",
pricing: {
term: "1 year",
price: "$4.95",
term: "2 years",
price: "3.95"
},
我在 MySQL 中有两个表,一个称为计划,它是以这种方式构造的
| id | company |
------------------
| 2 | company 1 |
还有一个表plans_pricing来表示定价数据
| id | plans_id | term | price |
--------------------------------
| 1 | 2 | 1 year | $4.95 |
| 2 | 2 | 2 years| $3.95 |
我正在使用 Laravel 4 来查询数据库并创建 json 以发送回我的 ajax 请求。这是查询,当前正在发送服务器 500 错误。
public function results()
{
$answers = $_POST['answers'];
$data = DB::table('plans')
->join('plans_pricing', 'plans.id', '=', 'plans_pricing.plans_id')
->select('plans.company', 'plans_pricing.price', 'plans_pricing.term')
->whereIn('plans.id', $answers)
->get();
echo json_encode($data);
}
我不确定为什么这个查询不起作用,但这甚至不是我问这个问题的原因。我需要知道如何获取嵌套的 JSON 对象,当我创建连接时,我相信我会为每个对象收到一个单独的对象,如下所示:
| company | price | term |
------------------------------------
| company 1 | 4.95 | 1 year |
| company 1 | 3.95 | 2 years|
如何让这个 SQL 查询返回一个嵌套的 JSON 对象,就像我上面描述的那样?我已经在这个问题上停留了两天,真的可以使用一些指导。谢谢
更新:
通过将 echo json_encode 更改为 return Response::json($data); 修复了服务器 500 错误
【问题讨论】:
-
$answers 的价值是多少?
-
通常是一个 id 数组,例如 2, 3 , 4。但为了简单起见,假设
$answers = 2,id的company1 -
您是否验证过您的查询是否正确执行,例如检查是否出错,或者
$data实际上包含行 -
我没有收到任何错误,除了当我 console.log ajax 请求时出现服务器 500 错误。在我添加连接之前,查询运行良好
-
如果你使用 laravel 而不是 echo json_encode 使用 return Response::json($data);另外,如果您在 chrome open 中,您的开发人员工具会在您发出请求时转到网络并选择 ajax 请求,它会给出什么错误?
标签: javascript php mysql sql json