У меня проблема с моим кодом, и я не понимаю, в чем проблема. Это мой код:
/**
* @Route("/api/{key}/warn/{sender}/{player}/{reason}")
*/
public function warnAction(Request $request, $key, $sender, $player, $reason)
{
if($key == API::KEY) {
$date = new \DateTime();
$until = new \DateTime();
$until->add(new \DateInterval("P" . ($reason * 3) . "D"));
$type = $this->getBanType($reason);
$ban = new Ban();
$ban->setType($type);
$ban->setSender($sender);
$ban->setPlayer($player);
$ban->setReason($reason);
$ban->setDate($date);
$ban->setUntil($until);
$ban->setNotes("");
$manager = $this->getDoctrine()->getManager();
$manager->persist($ban);
$manager->flush();
$data = array(
"status" => "success",
"id" => $ban->getId()
);
return new JsonResponse($data);
} else {
$data = array(
"status" => "failed");
return new JsonResponse($data);
}
}
/**
* @param $reason
* @return int
*/
public function getBanType($reason)
{
if($reason <= 2) {
return Type::MUTE;
} else {
return Type::BAN;
}
}
Теперь, когда я запускаю / api / mykey / warn / кто-то / кто-то / 1, все работает, и это записывается в базу данных MySQL. Теперь я его удаляю.
Но когда я запускаю / api / mykey / warn / кто-то / кто-то / 4, в БД записываются две записи. Почему, и как я могу изменить код, который записывается в БД только один раз?
Спасибо за ответ!
Задача ещё не решена.
Других решений пока нет …