Мой API возвращает ответ во второй раз, когда он называется

Я делаю простую конечную точку API, которая возвращает код доступа к событию.

Если у события нет кода доступа, ему должен быть присвоен один. Затем он проверяет, является ли он в настоящее время публичным или частным. Если приватный, верните код доступа, если публичный, верните пустую строку.

public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);


// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
}

// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}

// Is it public ? return empty string.
else {
return '';
}
}

Моя проблема в том, что для частных событий, которые были нулевыми, он возвращает код доступа только во второй раз, когда он вызывается (как проверено на почтальоне). что не соответствует поведению API.

-1

Решение

Проблема в том, что $event объект не обновляется автоматически.

Сначала вы пытаетесь запросить событие, и если оно не существует, вы создаете его, но затем вам нужно запросить его снова.

Так в вашем if ($event->access_code == null) { часть, в конце вам нужно снова загрузить событие из БД:

public function getAc($eventId) {
// Pull event
$event = $this->eventService->api->getEventForce($eventId);

// If no access code for the event, generate one and update event record accordingly
if ($event->access_code == null) {
$access_code = $this->generateAccessCode();
$affected = DB::update('update events set access_code = ? where id = ?', [$access_code, $eventId]);
// Pull event again
$event = $this->eventService->api->getEventForce($eventId);
}

// Is the event currently private? return access code
if ($event->privacy=='private') {
return $event->access_code;
}

// Is it public ? return empty string.
else {
return '';
}
}

Надеюсь, поможет

РЕДАКТИРОВАТЬ:

Мое первоначальное предположение было неверным, то есть я думал (по какой-то причине), что вся запись отсутствует, и вы создаете новую строку события. Это ложь.
Запись о событии должна иметь privacy настройка независимо от того, есть код доступа или нет.

Я подозреваю, что ваша проблема не здесь (в этом классе), это должна быть какая-то другая ошибка в логике — например, api->getEventForce не возвращает события, которые не имеют кода доступа.

Попробуйте напечатать объект события сразу после запроса; я подозреваю, что это будет пустой результат

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector