Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v19.8
entity.diff()

entity.diff() 


 

entity.diff() ( entityToCompare {; attributesToCompare} ) -> Funktionsergebnis 
Parameter Typ   Beschreibung
entityToCompare  Entity in Entity zum Vergleichen mit der ursprünglichen Entity
attributesToCompare  Collection in Attributsnamen zum Vergleichen
Funktionsergebnis  Collection in Unterschiede zwischen den Entities

Die Methode entity.diff() vergleicht den Inhalt von zwei Entities und gibt die Unterschiede zurück.

In entityToCompare übergeben Sie die Entity zum Vergleichen mit der urspünglichen Entity.

In attributesToInspect können Sie spezifische Attribute zum Vergleichen angeben. Sind Attribute angegeben, wird der Vergleich nur mit diesen Attributen ausgeführt. Ohne Angabe werden alle Unterschiede zwischen den Entities zurückgegeben.

Die Unterschiede werden als Collection von Objekten mit folgenden Eigenschaften zurückgegeben:

EigenschaftsnameTypBeschreibung
attributeNameStringName des Attributs
valueAbhängig vom AttributstypWert des Attributs in der Entity
otherValueAbhängig vom AttributstypWert des Attributs in entityToCompare

Nur Attribute mit unterschiedlichen Werten sind in der Collection enthalten. Werden keine Unterschiede gefunden, gibt entity.diff() eine leere Collection zurück.

Die Methode gilt für Eigenschaften der Art storage oder relatedEntity (siehe dataClassAttribute.kind). Wurde eine verknüpfte Entity aktualisiert (d.h. der Fremdschlüssel), werden die Namen der verknüpften Entity und ihres Primärschlüssels als Eigenschaften attributeName zurückgegeben (value und otherValue sind leer für den Namen der verknüpften Entity).

Ist eine der verglichenen Entities Null, wird ein Fehler generiert.

 C_COLLECTION($diff1;$diff2)
 employee:=ds.Employee.query("ID=1001").first()
 $clone:=employee.clone()
 employee.firstName:="MARIE"
 employee.lastName:="SOPHIE"
 employee.salary:=500
 $diff1:=$clone.diff(employee// Alle Unterschiede werden zurückgegeben
 $diff2:=$clone.diff(employee;New collection"firstName";"lastName"))
  // Nur Unterschiede in firstName und lastName werden zurückgegeben

$diff1:

[
    {
        "attributeName": "firstName",
        "value": "Natasha",
        "otherValue": "MARIE"
    },
    {
        "attributeName": "lastName",
        "value": "Locke",
        "otherValue": "SOPHIE"
    },
    {
        "attributeName": "salary",
        "value": 66600,
        "otherValue": 500
    }
]

$diff2:

[
    {
        "attributeName": "firstName",
        "value": "Natasha",
        "otherValue": "MARIE"
    },
    {
        "attributeName": "lastName",
        "value": "Locke",
        "otherValue": "SOPHIE"
    }
]

 vCompareResult1:=New collection
 vCompareResult2:=New collection
 vCompareResult3:=New collection
 $attributesToInspect:=New collection
 
 $e1:=ds.Employee.get(636)
 $e2:=ds.Employee.get(636)
 
 $e1.firstName:=$e1.firstName+" update"
 $e1.lastName:=$e1.lastName+" update"
 
 $c:=ds.Company.get(117)
 $e1.employer:=$c
 $e2.salary:=100
 
 $attributesToInspect.push("firstName")
 $attributesToInspect.push("lastName")
 
 vCompareResult1:=$e1.diff($e2)
 vCompareResult2:=$e1.diff($e2;$attributesToInspect)
 vCompareResult3:=$e1.diff($e2;$e1.touchedAttributes())

vCompareResult1 (alle Unterschiede werden zurückgegeben):

[
    {
        "attributeName": "firstName",
        "value": "Karla update",
        "otherValue": "Karla"
    },
    {
        "attributeName": "lastName",
        "value": "Marrero update",
        "otherValue": "Marrero"
    },
    {
        "attributeName": "salary",
        "value": 33500,
        "otherValue": 100
    },
    {
        "attributeName": "employerID",
        "value": 117,
        "otherValue": 118
    },
  {
        "attributeName": "employer",
        "value": "[object Entity]",// Entity 117 von Company
        "otherValue": "[object Entity]"// Entity 118 von Company
    }
]

vCompareResult2 (nur Unterschiede in $attributesToInspect werden zurückgegeben)

[
    {
        "attributeName": "firstName",
        "value": "Karla update",
        "otherValue": "Karla"
    },
    {
        "attributeName": "lastName",
        "value": "Marrero update",
        "otherValue": "Marrero"
    }
]

vCompareResult3 (nur Unterschiede in betroffenen Attributen in $e1 werden zurückgegeben)

[
    {
        "attributeName": "firstName",
        "value": "Karla update",
        "otherValue": "Karla"
    },
    {
        "attributeName": "lastName",
        "value": "Marrero update",
        "otherValue": "Marrero"
    },
    {
        "attributeName": "employerID",
        "value": 117,
        "otherValue": 118
    },
     {
        "attributeName": "employer",
        "value": "[object Entity]",// Entity 117 von Company
        "otherValue": "[object Entity]"// Entity 118 von Company

    }
]



Siehe auch 

entity.touched( )

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: ORDA - Entity

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v17

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v19)
4D Programmiersprache ( 4D v19.1)
4D Programmiersprache ( 4D v19.4)
4D Programmiersprache ( 4D v19.5)
4D Programmiersprache ( 4D v19.6)
4D Programmiersprache ( 4D v19.7)
4D Programmiersprache ( 4D v19.8)