Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony] Doctrine2 , Symfony 2 i DateTime object
Forum PHP.pl > Forum > PHP > Frameworki
usb2.0
Czesc, mam problem ktorego nie rozumiem

w bazie trzymam czas w formacie '2014-01-27 11:00:00', oraz jest to pole typu datetime wiec jesli w kontrolerze pobiore pojedynczy rekord korzystajac z getDoctrine()->getRepository('...')->findOneById(1); dostane obiekt z id = 1, a po pobraniu pola uzywaja get() odrazu bedzie to obiekt typu DateTime

Jesli teraz na tym obiekcie wywolam metode getStartTime() ( ktora pobiera ten czas) dostane obiekt type DateTime - co jest oczywiscie
teraz chce ten czas modyfikowac, robie to np
  1. $newStartDate = $task->getStartDate()->add(new \DateInterval('P10D'));
  2. $task->setStartDate($newStartDate);

i jesli zrobie sobie var_dump od nowego czasu, faktycznie jest przesuniety do przodu o 10 dni i jest w porzadku, problem jest gdy chce dane updatowac w bazie,
  1. $em->persist($task)
  2. $em->flush()
zdaja sie nie dzialac w przypaku DateTime.
Np probowalem podczas jednego update zmieniac nazwe zadania i date jednoczenie, nazwa sie zmienia, natomiast data zostaje ta sama.
Ktos cos pomoze?

Z gory dzieki, pozdro



rozwiazane
  1. $newStartDate = $task->getStartDate()->add(new \DateInterval('P'.$task->getDaysLeft().'D'));
  2. $newStartDate = new \DateTime($newStartDate->format('Y-m-d H:i:s'));

nadal nie rozumiem jednak czemu tak to musi byc O.O
Crozin
Doctrine przy wykonywaniu UPDATE sprawdza co zmieniło się w obiekcie i dopiero w przypadku gdy faktycznie coś się zmieniło wykona zapytanie. Oznacza to, że musi być on wstanie jakoś rozpoznać te zmiany. W przypadku obiektów polega on na porównaniu wyniku spl_object_hash, który będzie różny dla dwóch dowolnych obiektów. Modyfikując obiekt DateTime zmieniasz jego właściwości bez zmiany samego obiektu, stąd Doctrine nie jest wstanie rozpoznać zmian.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.