Laravel Query包括多对多计数

时间:2015-12-22 17:19:28

标签: laravel laravel-4

我正在设置一个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数据透视表中具有特定类别标记的成员总数。

1 个答案:

答案 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');
}