Kann ich über die Eigenschaften einer Entität in Doctrine2 iterieren?

7

ich benutze

%Vor%

Ich greife über

darauf zu %Vor%

Wie kann ich die Feldnamen bekommen? Ich dachte, der Schlüssel = & gt; würde funktionieren, aber es druckt s den Schlüssel als 0

Ich dachte, das würde funktionieren:

%Vor%

aber immer noch nichts .. }

    
dean jase 17.08.2011, 13:17
quelle

4 Antworten

17

Die Eigenschaften Ihrer Blog-Entität werden höchstwahrscheinlich als protected deklariert. Deshalb können Sie nicht von außerhalb der Entität über sie iterieren.

Wenn Sie Ihre Blog-Entities schreibgeschützt verwenden und nur auf die als @Columns markierten Eigenschaften zugreifen müssen (lesen Sie: Sie müssen keine Methoden für Ihre Entität aufrufen), sollten Sie sie verwenden Array-Hydratation. Auf diese Weise werden Sie mit einfachen Arrays arbeiten, und $k=>$v Type Iteration funktioniert gut.

Andernfalls müssen Sie eine Art der Methode "getValues ​​()" für Ihre Entitätsklasse erstellen. Dies könnte eine einfache Implementierung sein, die nur Builds und Arrays erstellt und zurückgibt.

Schließlich können Sie eine allgemeine Funktion namens getValues ​​() als Dienstprogrammfunktion erstellen, die die Klassenmetadaten der Lehrmethode verwendet, um herauszufinden, welche Spalten und Entitäten die betreffenden Daten enthalten und bearbeiten. Eine einfache Implementierung wie folgt:

%Vor%

BEARBEITEN - Eine ausgereiftere Version der obigen Methode scheint hier verfügbar - Ich habe noch nicht damit gespielt, aber es sieht vielversprechend aus.

    
timdev 17.08.2011, 19:56
quelle
1

Verwenden Sie findOneBy anstelle von findBy , um eine einzelne Zeile auszuwählen.

%Vor%

Ihr Schlüssel war 0 , weil es die erste Zeile in einem möglichen mehrzeiligen Ergebnis war.

    
adlawson 17.08.2011 13:21
quelle
1

Wenn Sie nur schnell und einfach die Eigenschaften der Entity bekommen wollen, mache ich das in meinen Projekten:

Alle meine Entitäten erben von einer EntityBase-Klasse, die die folgende Methode hat:

%Vor%

Also muss ich nur $entity->toValueObject() aufrufen und erhalte ein Standardobjekt mit allen Eigenschaften der Entität als öffentliche Eigenschaften.

    
antonienko 15.05.2015 14:45
quelle
0

Dies ist eine Implementierung einer Serialisierungsklasse, die auch prüft, ob es sich um eine Doktrin-Entität handelt:

%Vor%     
zioMitch 24.09.2016 13:17
quelle

Tags und Links