В ошибке же прямо сказано: "Значение null первичного ключа недопустимо". Это, видимо, из-за тоео, что у несохраненного нового элемента еще нет id.
Вы скопировали эти функции откуда-то, да? Думаю, в cancel() нужно избавиться от checkin(), хотя нелишне будет понять, что она представляет собой. Приведенный вами код ничего не говорит: что такое $map и его метод checkin?