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?
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.