2016-04-05 16 views
4

serileştirirler. Ben AcmeRepository yılında datebase seçin yapmakSymfony'nin 3 - otomatik ben <code>createdAt</code> sütun ile bazı varlık var Projemde DateTime nesnesi

fos_rest: 
    disable_csrf_role: ROLE_API 
    param_fetcher_listener: true 
    body_listener: true 
    format_listener: 
     rules: 
      - { path: '/', fallback_format: json, prefer_extension: false } 
    routing_loader: 
     default_format: json 
     include_format: false 
    view: 
     view_response_listener: force 

:

//... 
class Acme 
{ 
    /** 
    * @var DateTime 
    * 
    * @ORM\Column(name="created_at", type="datetime") 
    */ 
    protected $createdAt; 
} 

Ben Symfony'nin serileştiriciye ile FOSRestBundle sağladı

public function methodName() 
{ 
    $qb = $this->createQueryBuilder('d'); 
    $s = $qb->select('d.createdAt']); 

    return $s->getQuery()->getArrayResult(); 
} 

Ve sonuçta

, benim denetleyicisi:

$res = $em->getRepository('AppBundle:Acme')->methodName(); 
return $res; 

Bu döner json, ama yerine [{"created_at": "2016-04-04 12:13:13"}] i bu alıyorum:

[{"created_at":{"timezone":{"name":"UTC","location":{"country_code":"??","latitude":0,"longitude":0,"comments":""}},"offset":0,"timestamp":1459769277}] 

Bunu nasıl düzeltebilirim?

cevap

4

Sen (here doc kontrol edin) doğru açıklama Tipi ile FOS DİNLENME modülü için tanımlanmış Türü biçimi belirtebilirsiniz.

use JMS\Serializer\Annotation\Type as JMS; 

class Acme 
{ 
    /** 
    * @var DateTime 
    * 
    * @ORM\Column(name="created_at", type="datetime") 
    * @JMS\Type("DateTime<'Y-m-d'>") 
    */ 
    protected $createdAt; 
} 

Umut bu yardımı Symfony'nin Serializer ile

+0

Belki bilinen çözüm: Örnek olarak? –

+0

Symfony'nin seri hale bileşeni ile tarih saat nesnesi deserializing bir örnek [buradan] (bulunabilir http://symfony.com/doc/current/components/serializer.html#using-callbacks-to-serialize-properties-with-object -instances) doc – Matteo

+0

da [bu] (http://stackoverflow.com/a/33149890/2270041) iyi bir çözüm gibi görünüyor! – Matteo