Laravel JSON()响应返回值的两倍

问题描述:

我已经建立了一个模型User和我创建了一个控制器得到一些值:Laravel JSON()响应返回值的两倍

<?php 

namespace App\Http\Controllers; 

use Dingo\Api\Routing\Helpers; 
use Illuminate\Routing\Controller; 

use App\Models\User; 

class UserController extends Controller 
{ 

    use Helpers; 

    public function index() 
    { 
     $users = User::all(); 

     return $users; 
    } 
} 

但是当我运行此,则返回JSON值的两倍:

{ 
    "users": [ 
    { 
     "0": "Firstname Lastname", 
     "1": "Accusantium commodi repellat quia eos. Cumque debitis qui deserunt aspernatur harum vitae aut.", 
     "2": 1, 
     "3": "2016-12-04 21:56:59", 
     "4": "2016-12-04 21:56:59", 
     "name": "Firstname Lastname", 
     "profile": "Accusantium commodi repellat quia eos. Cumque debitis qui deserunt aspernatur harum vitae aut.", 
     "house_id": 1, 
     "created_at": "2016-12-04 21:56:59", 
     "updated_at": "2016-12-04 21:56:59" 
    }, 
} 

但是,一个奇怪的事情:上面的反应是当我的用户模型中有一个空的$visible[]数组。但是当我设置$visible包含,例如,nameprofile这两个值都只显示一次。这里有什么问题?为什么显示两次?

+0

什么是你的结果,当你使用'$回报用户 - >的toJSON();'? – manniL

+0

没有区别,值再次返回两次。 – Jordy

+0

你的用户模型结构是什么? – Sachith

您必须将结果转换成数组

public function index() 
{ 
    $users = User::all()->toArray(); 

    return $users; 
} 

可以返回的数据是这样的,因为使用的是野狗API。

public function index() 
{ 
    $users = User::all(); 

    return $this->response->array($users->toArray()); 
} 

你可以参考:https://github.com/dingo/api/wiki/Responses