Laravel数组键存在于get方法中

时间:2018-03-28 13:59:57

标签: php arrays laravel laravel-5

我正在尝试获取与我的服务相关的类别的ID和名称。服务具有许多类别,并且类别属于服务。但是,当我尝试将id和名称作为数组返回时,它会给我这个错误。

  

array_key_exists():第一个参数应该是字符串或   整数。

这是我的方法或功能。

public function getCategories($idService)
{
    $service = Service::findOrFail($idService);
    return $service->categories->get(['id','name']);;
}

这是定义的路线。

Route::get('service/{service}/categories', 'ServiceController@getCategories');

我试图查看并浏览它,但根本无法找到任何解决方案。

3 个答案:

答案 0 :(得分:5)

使用 pluck() 方法

return $service->categories->pluck('id','name');

答案 1 :(得分:1)

参数的名称必须与通配符相同,并且您需要使用 pluck(),如您在其他注释中所述:

public function getCategories($service)
{
    $service = Service::findOrFail($service);
    return $service->categories->pluck(['id','name']);
}

如果服务是模型,您也可以使用雄辩:

public function getCategories(Service $service)
{
    return $service->categories->pluck(['id','name']);
}

答案 2 :(得分:0)

我猜它与with渴望加载有关...需要使用预先加载来获取关系..如果你想要过滤更多,请使用laravel集合

public function getCategories($idService)
{
    return Service::with(['categories' => function ($query) {
         $query->select('id', 'name');
    }])->findOrFail($idService);
}