Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v19.8
entity.diff( )

entity.diff( ) 


 

entity.diff ( entidadAComparar {; atributosAComparar} ) -> Resultado 
Parámetro Tipo   Descripción
entidadAComparar  Entity in Entidad a comparar con la entidad original
atributosAComparar  Collection in Nombre de los atributos a comparar
Resultado  Collection in Diferencias entre las entidades

El método entity.diff( ) compara el contenido de dos entidades y devuelve sus diferencias.

En entidadAComparar, pase la entidad que se comparará con la entidad original.

En atributosAComparar, puede designar atributos específicos a comparar. Si se da, la comparación se realiza solo en los atributos especificados. Si no se da, se devuelven todas las diferencias entre las entidades.

Las diferencias se devuelven como una colección de objetos cuyas propiedades son:

Nombre de la propiedadTipoDescripción
attributeNameCadenaNombre del atributo
valueDepende del tipo de atributoValor del atributo en la entidad
otherValueDepende del tipo de atributoValor del atributo en entidadAComparar

Solo los atributos con diferentes valores están incluidos en la colección. Si no se encuentran diferencias, entity.diff( ) devuelve una colección vacía.

El método aplica a las propiedades cuyo tipo es storage o relatedEntity (ver dataClassAttribute.kind). En el caso de que una entidad relacionada se haya actualizado (llave foránea), el nombre de la entidad relacionada y su nombre de llave primaria se devuelven como propiedades attributeName (value y otherValue están vacías para los nombres de entidad relacionados)

Si una de las entidades comparadas es Null, se genera un error.

 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// Todas las diferencias se devuelven
 $diff2:=$clone.diff(employee;New collection"firstName";"lastName"))
  // Sólo se devuelven las diferencias en firstName y lastName

$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 (todas las diferencias se devuelven):

[
    {
        "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 (solo se devuelven las diferencias en $attributesToInspect)

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

vCompareResult3 (solo se devuelven las diferencias en $e1 touched attributes)

[
    {
        "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]",// Entidad 117 de Company
        "otherValue": "[object Entity]"// Entidad 118 de Company

    }
]



Ver también 

entity.touched( )

 
PROPIEDADES 

Producto: 4D
Tema: ORDA - Entity

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v17

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v19)
Manual de lenguaje 4D ( 4D v19.1)
Manual de lenguaje 4D ( 4D v19.4)
Manual de lenguaje 4D ( 4D v19.5)
Manual de lenguaje 4D ( 4D v19.6)
Manual de lenguaje 4D ( 4D v19.7)
Manual de lenguaje 4D ( 4D v19.8)