Как решить неопределенную ошибку индекса при добавлении выбранного количества каждого типа регистрации в массив? - PullRequest
0 голосов
/ 03 июля 2018

Я хочу получить количество каждого типа регистрации с кодом ниже:

$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
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...