如何以Json格式转换子查询中的数据?

时间:2016-12-03 09:58:03

标签: laravel laravel-5.2 laravel-5.3

我使用ORM从DB获取数据:

$products = Products::with("categories")->get();

当我做JSON响应时:

return response()->json(["producst" => $products]);

所以,我收到以下回复:

{
  "products": {
    "total": 727,
    "per_page": "20",
    "current_page": 1,
    "last_page": 37,
    "next_page_url": "",
    "prev_page_url": null,
    "from": 1,
    "to": 20,
    "data": [
      {
        "id": 782,
        "price": "1.9",
        "object_id": "47",
        "available": "1",
        "categories": {

         "names": {
              "id": 14,
              "parent_id": "0",
              "active": "1",
              "title": "Stron",
              "description": ""
            }
          }
      }

问题在于,我在这里得到错误的格式JSON:

"categories": {...}

它应该是:"categories": []因为里面可以是一些元素。

我怎样才能在Laravel中这样做?

1 个答案:

答案 0 :(得分:0)

通过查看您的json数据,似乎categories函数返回的是模型对象,而不是集合。

这可能是由product模型中的错误关系引起的。所以正确的关系应该是:

public function categories()
{
    return $this->hasMany('App\Category');
}