我正在设置一个API,并寻找一种有效的方法来返回每个类别,并记录每个类别中的记录数。
由于这篇文章:Laravel hasMany relation count number of likes and comments on post我知道创建一个访问器是一种可能性,但我不确定如何将一个访问器应用于对象中的每个记录。
目前我使用eloquent :: all()返回类别:
public function getAPICategories($localKey){
$data['categories'] = Skill::all();
return Response::json($data)->setCallback('test');
}
这将返回JSONP中的完整类别列表
/**/test({
"categories":[
{
"id":"1",
"name":"Accounting",
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00",
"deleted_at":null
},
{
"id":"2",
"name":"Advertising",
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00",
"deleted_at":null
}]
});
具体来说,我希望返回的内容: - 注意添加"计算":
{
"id":"2",
"name":"Advertising",
**"count":"13",**
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00",
"deleted_at":null
},
计数需要来自contractor_skill数据透视表中具有特定类别标记的成员总数。
答案 0 :(得分:0)
通过构建我自己的数组并从雄辩的关系中添加我需要的数据,我得到了我正在寻找的答案:
public function getAPICategories($localKey){
$skills= Skill::all();
$data = [];
foreach ($skills as $skill){
$arr = array(
'id' => $skill->id,
'name' => $skill->name,
'count' => $skill->Contractors->count()
);
$data['categories'][] = $arr;
}
return Response::json($data)->setCallback('test');
}