我正在尝试获取与我的服务相关的类别的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');
我试图查看并浏览它,但根本无法找到任何解决方案。
答案 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);
}