Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [Symfony]Timestampable
Forum PHP.pl > Forum > PHP > Frameworki
Szymciosek
Witam,
podczas pobierania z bazy danych u.created otrzymuję:
Kod
{"created":{"date":"2012-08-20 00:00:00","timezone_type":3,"timezone":"Europe\/Warsaw"}}


czyli date, timezone_type, timezone, mi jest potrzebne tylko date. Jak się do tego dostać ?
Dodaję za pomocą: "@Gedmo\Timestampable(on="update")"

Odpadają wszelkie pomysły typu
$date = date_z_sql->date... coś w tym stylu, bo raz będę potrzebował tego, a raz nie.

EDIT::
Dodam jeszcze, że pobieram dane:

  1. $query = $doctrineManager->createQuery(
  2. "SELECT $cols FROM xxxBundle:Users u WHERE u.asd = '$asd'"
  3. );
marcio
Wyglada na to ze zwraca ci to w postaci json(mam nadzieje ze nie powiedzialem glupoty haha.gif) wiec uzyj json_decode i pozniej pobierz sobie z tablicy
Szymciosek
Coś czuję, że nie bardzo mogę, bo json na koniec zwracany jest do czegoś innego, a sam json, który zwracam wygląda:

w przypadku pobierania tylko created:
Kod
{"data":{"users":{"created":{"date":"2012-08-20 00:00:00","timezone_type":3,"timezone":"Europe\/Warsaw"}},"response":{"status":"success"}}}


a już w przypadku np created oraz username:
Kod
{"data":{"users":{"created":{"date":"2012-08-20 00:00:00","timezone_type":3,"timezone":"Europe\/Warsaw"},"username":"username@xxx.pl"},"response":{"status":"success"}}}


Więc trochę nie w tą stronę, problem ten jest spowodowany chyba timestampable i to chyba na nim trzeba się skupić, to jak odbiera dane z bazy. Gdzieś coś było wspomniane o jakimś hmm konwerterze, który podczas pobierania nie zwraca całej zawartości wiersza tylko po prostu pobiera co potrzeba i dopiero wtedy zwraca, ale teraz nie mogę niczego takiego znaleźć ;/

EDIT::
W sumie podczas var_dump($result) z bazy dostaję
Kod
array (size=1)
  0 =>
    array (size=1)
      'created' =>
        object(DateTime)[440]
          public 'date' => string '2012-08-20 00:00:00' (length=19)
          public 'timezone_type' => int 3
          public 'timezone' => string 'Europe/Warsaw' (length=13)

ale i tak nie wiem jak zrobić to automatycznie podczas wyboru pola created, ale żeby nie działało zawsze, bo nieraz wybiorę więcej niż tylko pole created i wtedy trzeba kombinować jak to pobrać dobrze z bazy.

EDIT2::
Przy próbie
var_dump($result[0]['created']->date);

otrzymuję

Kod
Notice: Undefined property: DateTime::$date in
destroyerr
Nie wiem dlaczego xdebug oznacza te właściwości jako publiczne ale publiczne nie są. Powinieneś skorzystać z funkcji format.
Szymciosek
Format rozwiązuje ten problem, ale chyba muszę zastosować tutaj if.

  1. if (count($result) > 0)
  2. {
  3. foreach ($result[0] as $key => $value)
  4. {
  5. $data['data']['users'][$key] = $value;
  6. }
  7. ...


i wtedy, gdy natrafi w wymaganych polach na created to dodawać z ->format(...), a gdy już to minie to dodawać resztę poza if albo else, jeszcze się zastanowię.

Dziękuję wink.gif
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.