Код: Выделить всё
[
{
"age": 8,
"countAll": 3,
"gender": [
{
"genderName": "male",
"countGender": 2
},
{
"genderName": "female",
"countGender": 1
},
]
},
{
"age": 10,
"countAll": 1,
"gender": [
{
"genderName": "male",
"countMale": null (or "0")
},
{
"genderName": "female",
"countFemale": 1
},
]
},
Код: Выделить всё
| id | name | gender | age | user_id |
--------------------------------------------
| 1 | nameA | male | 8 | 1 |
| 2 | nameB | female | 10 | 1 |
| 3 | nameC | male | 8 | 1 |
| 4 | nameD | female | 8 | 1 |
Код: Выделить всё
$test = Participant::select('age', DB::raw('COUNT(age) as countAge'), DB::raw('COUNT(gender) as countGender'))->where('user_id', $user_id)->groupBy('age')->orderBy('age', 'ASC')->get();
Код: Выделить всё
$output = array();
$currentAge = "";
$currentCount = "";
foreach ($test as $data) {
if ($data->age != $currentAge) {
$output[] = array();
end($output);
$currentItem = &$output[key($output)];
$currentAge = $data->age;
$currentCount = $data->countAge;
$currentItem['age'] = $currentAge;
$currentItem['countAll'] = $currentCount;
$currentItem['gender'] = array();
}
$currentItem['gender'][] = array('genderName' => $data->gender, 'countGender' => $data->countGender);
}
Код: Выделить всё
[
{
"age": 8,
"countAll": 3,
"gender": [
{
"genderName": null,
"countGender": 3
}
]
},
{
"age": 10,
"countAll": 1,
"gender": [
{
"genderName": null,
"countGender": 1
}
]
},
Как мне заставить этот запрос Eloquent возвращать вложенный объект JSON, подобный тому, который я описал выше?
Подробнее здесь: https://stackoverflow.com/questions/786 ... eloquent-q