Обновление DateTime в доктрине невозможно

1

Я хотел бы обновить 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" 
}"
  • 0
    Я подозреваю, что вы ожидаете, что $ user = $ repo-> find ($ id) вызовет конструктор и обновит дату и время? Doctrine не вызывает конструктор при загрузке сущности из базы данных.
  • 0
    нет, когда я вызываю, что объект уже существует, поэтому я изменю его с помощью "$ user-> updateLastPost (); $ em-> persist ($ user); $ em-> flush ();" А когда он не выходит, вызывается конструктор с помощью «$ user = new User ();»
Показать ещё 5 комментариев
Теги:
datetime
doctrine2

1 ответ

1
Лучший ответ

Я очень подозреваю, что ваша аннотация неверна.

Вы используете time типа, тогда как это скорее всего будет datetime.

Пытаться:

/**
 * @var \DateTime
 *
 * @ORM\Column(name="lastPost", type="datetime", length=255)
 */
private $lastPost;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню