Wie aktualisiert man eine Doctrine Entity von einem serialisierten JSON?

8

Wir verwenden Symfony2, um eine API zu erstellen. Beim Aktualisieren eines Datensatzes erwarten wir, dass die JSON-Eingabe eine serialisierte aktualisierte Entität darstellt. Die JSON-Daten enthalten keine Felder (CreatedAt sollte beispielsweise nur einmal beim Erstellen der Entität festgelegt und nie aktualisiert werden). Zum Beispiel ist hier eine Beispiel JSON PUT Anfrage:

%Vor%

Hier ist der PHP-Code auf dem Controller, der die Entity gemäß dem obigen JSON aktualisieren soll (wir verwenden das JMS-Serializer-Bundle):

%Vor%

Der EntityManger versteht (korrekt), dass es sich um eine Aktualisierungsanforderung handelt (tatsächlich wird implizit eine SELECT-Abfrage ausgelöst). Der EntityManager schätzt auch (nicht korrekt), dass CreatedAt -Eigenschaft NULLified sein sollte - stattdessen sollte die vorherige beibehalten werden.

Wie behebt man dieses Problem?

    
Roberto 04.01.2012, 12:06
quelle

2 Antworten

8

Ich würde die Doctrine\ORM\Mapping\ClassMetadata API verwenden, um vorhandene Felder in Ihrer Entität zu finden. Sie können Folgendes tun (ich weiß nicht, wie JMSSerializerBundle funktioniert):

%Vor%     
Ocramius 30.01.2012, 00:44
quelle
14

mit dem JMSSerializerBundle folgen Sie den Installationsanweisungen unter Ссылка

Erstellen Sie entweder Ihren eigenen Serialisierungsdienst oder ändern Sie JMSSerializerBundle, um den Doktrinobjektkonstruktor anstelle des einfachen Objektkonstruktors zu verwenden.

%Vor%

Dies behandelt im Grunde genommen genau das, was die Ocromius-Lösung tut, aber die Verwendung der JMSSerializerBundles-Deserialisierung.

    
Heyflynn 13.05.2013 20:58
quelle

Tags und Links