Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19.8
entity.diff( )

entity.diff( ) 


 

entity.diff ( entidadeAcomparar {; atributoAinspecionar} ) -> Resultado 
Parâmetro Tipo   Descrição
entidadeAcomparar  Entity in Entidade a ser comparada com a entidade original
atributoAinspecionar  Collection in Nome dos atributos a comparar
Resultado  Collection in Diferenças entre as entidades

O método entity.diff( ) compara o conteúdo de duas entidades e retorna suas diferenças.

Em entidadeAComparar, passe a entidade a comparar com a entidade original.

Em atributosAInspecionar, pode decidir os atributos específicos que vai comparar. Se oferecido, a comparação é feita apenas nos atributos específicos. Se não oferecido, todas as diferenças entre as entidades são retornadas.

As diferenças são retornadas como uma coleção de objetos cujas propriedades são:

Nome de PropriedadeTipoDescrição
attributeNameStringNome do atributo
valorDepende do tipo do atributoValor do atributo na entidade
otherValueDepende do tipo de atributoValor do atributo na  entidadeAComparar

Só atributos com valores diferentes são incluidos na coleção. Se nenhuma diferença for encontrada, entity.diff( ) retorna uma coleção vazia.

O método aplica para propriedades cujo tipo é  armazenamento ou entidadeRelacionada (ver dataClassAttribute.kind). No caso de uma entidade relacionada tenha sido atualizada (ou seja uma chave estrangeira -foreign), o nome da entidade relacionada e o nome da chave primária são retornados como propriedades nomeAtributo  (valor e outroValor são vazias para o nome da entidade relacionada)

Se uma das entidades comparadas for Null, um erro é levantado.

 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 as diferenças são retornadas
 $diff2:=$clone.diff(employee;New collection"firstName";"lastName"))
  // Só diferenças em firstName e lastName são retornadas

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

vCompareResult2 (só diferenças em $attributesToInspect são retornadas)

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

vCompareResult3 (só diferenças em atributos $e1 touched são retornadas)

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

    }
]



Ver também 

entity.touched( )

 
PROPRIEDADES 

Produto: 4D
Tema: ORDA - Entidade

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v17

 
ARTICLE USAGE

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