Я хотел бы обновить DateTime
с помощью Doctrine в моем контроллере.
Целью страницы является загрузка фотографий в базу данных. Допускается только одна загрузка пользователем.
Все работает, но DateTime
не сохраняется в базе данных.
Вот мой контроллер:
public function delationAction(Request $request)
{
$_SESSION['AriseID']="boucas2013";
$finder = new Finder();
$finder->in('/var/www/html/separatiiste/web/uploads');
$photos = array();
foreach ($finder as $file) {
array_push($photos, $file->getRelativePathname());
}
$em = $this->getDoctrine()->getManager();
$b=1;
$user = $this ->getDoctrine()
->getManager()
->getRepository('SlothBundle:User')
->findOneBy(array('ariseID' => $_SESSION['AriseID']));
if ($user==null) {
$b=0;
$user = new User();
$user->setAriseID($_SESSION['AriseID']);
}
$interval= date_diff(new \DateTime(),$user->getLastPost())->d;
var_dump($user->getLastPost());
if ($interval>0||$b==0) {
$photo = new Photo();
$form = $this->get('form.factory')->createBuilder(new PhotoType(), $photo)->getForm();
if ($form->handleRequest($request)->isValid()) {
$em->persist($photo);
$user->updateLastPost();
$em->persist($user);
$em->flush();
$photo->upload();
return $this->redirect($this->generateUrl('sloth_default_delation'));
}
return $this->render('SlothBundle:Default:delation.html.twig', array(
'form' => $form->createView(),
'photos' => $photos,
));
}
else {
return $this->render('SlothBundle:Default:delation.html.twig', array(
'photos' => $photos,
));
}
}
и есть данные в моей сущности Пользователь
/**
* @var \DateTime
*
* @ORM\Column(name="lastPost", type="time", length=255)
*/
private $lastPost;
/**
* Get lastPost
*
* @return DateTime
*/
public function getLastPost()
{
return $this->lastPost;
}
/**
* Update lastPost
*
* @return DateTime
*/
public function updateLastPost()
{
$this->lastPost = new \DateTime("now");
return $this;
}
public function __construct()
{
$this->lastPost = new \DateTime("now");
}
каждый раз, когда var_dump
возвращает:
"object(DateTime)#344 (3) {
["date"]=> string(26) "1970-01-01 14:46:31.000000"
["timezone_type"]=> int(3)
["timezone"]=> string(12) "Europe/Paris"
}"
Я очень подозреваю, что ваша аннотация неверна.
Вы используете time
типа, тогда как это скорее всего будет datetime
.
Пытаться:
/**
* @var \DateTime
*
* @ORM\Column(name="lastPost", type="datetime", length=255)
*/
private $lastPost;