Я хочу получить количество каждого типа регистрации с кодом ниже:
$registrationTypeDetails = Registration::with('participants:id,registration_type_id,registration_id')->find($regID);
$type_counts = [];
foreach ($registrationTypeDetails->participants as $p) {
$name = $p->registration_type->name;
if (!isset($type_counts[$name])) {
$type_counts[$name] = 0;
}
$type_counts[$name]++;
}
Дд ($ type_counts), если пользователь выполняет регистрацию с двумя типами регистрации «общая» и одним типом регистрации «плюс», показывает:
array:2 [▼
"geral" => 2
"plus" => 1
]
Так что работает нормально. Но тогда мне нужно отправить запрос в API, где необходимо отправить в теле запроса количество каждого типа регистрации, в этом случае для типа регистрации «общий» значение должно быть «2», а для типа регистрации «плюс» значение должно быть «1».
Но это не работает должным образом, значение всегда равно «1» для обоих типов регистрации.
Знаете ли вы, где проблема?
foreach($registration->conference->registrationTypes as $key=>$registrationType){
$items['invoice']['items'][] = [
'name' => $registration->conference->registrationTypes[$key]['name'],
'unit_price' => $registration->conference->registrationTypes[$key]['price'],
'quantity' => $type_counts[$name],
];
}
$create = $client->request('POST', 'https://...', [
'query' => ['api_key' => '...'], 'json' => $items,
]);
Массив результатов имеет количество «1», как показано ниже, но количество должно быть «2» для типа регистрации «общий» и «1» для «плюс»:
array:1 [▼
"invoice" => array:4 [▼
"client" => array:7 [▶]
"items" => array:2 [▼
0 => array:5 [▼
"name" => "general"
"unit_price" => 10
"quantity" => 1
]
1 => array:5 [▼
"name" => "plus"
"unit_price" => 0
"quantity" => 1
]
]
]
]