Я делаю простую конечную точку 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.
Проблема в том, что $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
не возвращает события, которые не имеют кода доступа.
Попробуйте напечатать объект события сразу после запроса; я подозреваю, что это будет пустой результат
Других решений пока нет …