У меня в базе данных есть одна таблица «Формирование» с «id, name, start_date, end_date, enabled».Мне бы хотелось, чтобы, когда начальная дата была меньше текущей, установите для «enable» значение 1, а для превышения конечной даты установите значение «enabled» в 0. Для этого я подумал об использовании подписчика.Но я не могу понять, как это работает.
Вот где я нахожусь:
EventSubscriber \ DateFormationSubscriber.php:
namespace App\EventSubscriber;
use App\Entity\Formation;
use App\Event\AppEvent;
use App\Event\FormationEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\EventDispatcher\Event;
class DateFormationSubscriber implements EventSubscriberInterface
{
private $entityManager;
public function __construct(EntityManagerInterface $entityManager)
{
$this->entityManager = $entityManager;
}
public static function getSubscribedEvents()
{
return [
['checkStartDate', 10],
['checkEndDate', 0],
];
}
public function checkStartDate(FormationEvent $event)
{
$tz = new \DateTimeZone('Europe/Paris');
$datetime = new \DateTime("now", $tz);
if($event->getStartDate() <= $datetime){
$this->entityManager->persist($event->setEnabled('1'));
$this->entityManager->flush();
}
else{
$this->entityManager->persist($event->setEnabled('0'));
$this->entityManager->flush();
}
}
public function checkEndDate(FormationEvent $event)
{
}
}
Event \ FormationEvent.php:
<?php
namespace App\Event;
use App\Entity\Formation;
use Symfony\Component\EventDispatcher\Event;
class FormationEvent extends Event
{
private $formation;
/**
* @return \App\Entity\Formation
*/
public function getStartDate(): formation
{
return $this->formation->getStartDate();
}
/**
* @return \App\Entity\Formation
*/
public function getEndDate(): formation
{
return $this->formation->getEndDate();
}
/**
* @return \App\Entity\Formation
*/
public function setEnabled(): formation
{
return $this->formation->setEnabled();
}
}
Даты заносятся в базу данных из формы.Например, в своей форме я создаю формацию «name: test», «date_start: 18/03/2019 09:50» «end_date: 20/03/2019 01:00» «enabled: 0».Я хочу, чтобы start_date был проверен, и «enabled» переходит к «1», потому что дата начала уже прошла и end_date еще не закончена.Затем я хочу, чтобы дата окончания автоматически проверялась «20/03/2019 в 01:00», «включенный» автоматически переходит в «0», когда эта дата прошла
Можете ли вы мне помочь, пожалуйста?