Laravel响应json无用数组

时间:2016-10-12 13:37:42

标签: php json laravel laravel-5.3

我正在使用Laravel开发一个API,我的json响应有问题,例如我有一个函数:

    $company = Company::select('name')
        ->inRandomOrder()
        ->limit(1)
        ->get();

    return response()->json([
        'company' => $company,
    ]);

当我调用我的函数时,我得到了这个:

{
    "company": [
        {
            "name": "Company Number 1"
        }
    ]
}

为什么我公司之后有阵列? "company": [有没有办法在没有对象之前直接返回$company(在我的示例中命名为公司?)

谢谢!

2 个答案:

答案 0 :(得分:6)

将您的->get()更改为->first(),以便返回第一个模型而不是模型集合。

$company = Company::select('name')
    ->inRandomOrder()
    ->first();

return response()->json([
    'company' => $company,
]);

也可能不需要->limit(1),因为首先已经这样做了。

答案 1 :(得分:1)

->get()返回Collection,而first()返回第一个对象或集合。

因此,不再需要limit(1),Laravel的默认操作是以JSON响应。

因此,您可以简单地

return [
  'company' => Company::select('name')->inRandomOrder()->first()
];