Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entity.diff( )
|
entity.diff ( entitéAComparer {; attributsAComparer} ) -> Résultat | ||||||||
Paramètre | Type | Description | ||||||
entitéAComparer | Entity |
![]() |
Entité à comparer à l'entité d'origine | |||||
attributsAComparer | Collection |
![]() |
Noms des attributs à comparer | |||||
Résultat | Collection |
![]() |
Différences entre les entités | |||||
La méthode entity.diff( ) compare le contenu de deux entités et retourne leurs différences.
Dans le paramètre entitéAComparer, passez l'entité à comparer à l'entité d'origine.
Dans le paramètre attributsAComparer, vous pouvez désigner les attributs spécifiques à comparer. Si le paramètre est passé, la comparaison est effectuée uniquement sur les attributs spécifiés. S'il est omis, toutes les différences entre les entités sont retournées.
Les différences sont retournées sous forme de collection d'objets dont les propriétés sont :
Nom propriété | Type | Description |
attributeName | Texte | Nom de l'attribut |
value | Dépend du type d'attribut | Valeur de l'attribut dans l'entité d'origine |
otherValue | Dépend du type d'attribut | Valeur de l'attribut dans entitéAcomparer |
Seuls les attributs dont les valeurs diffèrent sont inclus dans la collection. Si aucune différence n'est trouvée, entity.diff( ) retourne une collection vide.
La méthode s'applique aux attributs dont le kind est storage ou relatedEntity (voir dataClassAttribute.kind). Dans le cas où une entité liée a été mise à jour (c'est-à-dire la clé étrangère), le nom de l'entité liée et de sa clé primaire sont retournés comme propriétés attributeName (value et otherValue sont vides pour le nom de l'entité liée).
Si l'une des entités comparées vaut Null, une erreur est retournée.
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) // All differences are returned
$diff2:=$clone.diff(employee;New collection"firstName";"lastName"))
// Only differences on firstName and lastName are returned
$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 (all differences are returned):
[ { "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 from Company "otherValue": "[object Entity]"// Entity 118 from Company } ]
vCompareResult2 (only differences on $attributesToInspect are returned)
[ { "attributeName": "firstName", "value": "Karla update", "otherValue": "Karla" }, { "attributeName": "lastName", "value": "Marrero update", "otherValue": "Marrero" } ]
vCompareResult3 (only differences on $e1 touched attributes are returned)
[ { "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 from Company "otherValue": "[object Entity]"// Entity 118 from Company } ]
Produit : 4D
Thème : ORDA - Entity
Nom intl. : entity.diff( )
Créé : 4D v17
4D - Langage ( 4D v19)
4D - Langage ( 4D v19.1)
4D - Langage ( 4D v19.4)
4D - Langage ( 4D v19.5)
4D - Langage ( 4D v19.6)
4D - Langage ( 4D v19.7)
4D - Langage ( 4D v19.8)