Я хочу получить количество каждого типа регистрации с кодом ниже:
$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]++;
}
dd($type_counts)
, если в конференции доступно 2 типа регистрации (общая и дополнительная) и пользователь выполняет регистрацию с 2 типами регистрации " общая " и 0 с типом регистрации " плюс"показывает:
array:2 [▼
"general" => 2
]
Так что работает нормально. Но затем мне нужно отправить запрос в API, где необходимо отправить в теле запроса количество каждого типа регистрации, в данном случае для типа регистрации " general " значение должно быть "2 ».
Но он не работает должным образом, кажется "Undefined index: plus"
.
Вы знаете, где проблема?
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[$registration->conference->registrationTypes[$key]['name']], // error is here
];
}
$create = $client->request('POST', 'https://...', [
'query' => ['api_key' => '...'], 'json' => $items,
]);
Массив с элементами должен иметь вид:
array:1 [▼
"invoice" => array:4 [▼
"items" => array:2 [▼
0 => array:5 [▼
"name" => "general"
"unit_price" => 10
"quantity" => 2
]
]
]
]
dd($registration->conference->registrationTypes)
показывает два типа регистрации, которые связаны с конференцией (общая и дополнительная):
Collection {#337 ▼
#items: array:2 [▼
0 => RegistrationType {#330 ▼
+wasRecentlyCreated: false
#attributes: array:11 [▼
"id" => 1
"name" => "general"
...
]
}
1 => RegistrationType {#345 ▼
#attributes: array:11 [▼
"id" => 2
"name" => "plus"
...
]
...
}
]
}
Проблема в том, когда не выбран какой-либо регистр типа «плюс». Если пользователь выбирает только типы регистрации типа «общий», появляется «Неопределенный индекс: плюс», но если пользователь выбирает типы регистрации «общий», но также «плюс», ошибка не появляется. Например, если $ type_counts как показано ниже, ошибка не появляется:
array:1 [▼
"geral" => 2,
"plus" => 1
]