Laravel 10: создание вложенного объекта JsonPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Laravel 10: создание вложенного объекта Json

Сообщение Anonymous »

Я хочу создать вложенный объект JSON, примерно так:

Код: Выделить всё

[
{
"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
},
]
},
У меня есть одна таблица в MySQL:

Код: Выделить всё

| 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    |
Я использую laravel 10, я сделал вот такой запрос

Код: Выделить всё

$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);
}
и результат в формате json_encoded:

Код: Выделить всё

[
{
"age": 8,
"countAll": 3,
"gender": [
{
"genderName": null,
"countGender": 3
}
]
},
{
"age": 10,
"countAll": 1,
"gender": [
{
"genderName": null,
"countGender": 1
}
]
},
Я прочитал много ссылок о создании вложенного Json и внес много изменений в SQL-запрос, но пока не нашел решения.
Как мне заставить этот SQL-запрос возвращать вложенный объект JSON, подобный тому, который я описал выше? Я застрял в этой проблеме и действительно мог бы использовать некоторые рекомендации. Спасибо

Подробнее здесь: https://stackoverflow.com/questions/786 ... son-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»