Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
entity.diff( )
|
entity.diff ( entidadeAcomparar {; atributoAinspecionar} ) -> Resultado | ||||||||
Parâmetro | Tipo | Descrição | ||||||
entidadeAcomparar | Entity |
![]() |
Entidade a ser comparada com a entidade original | |||||
atributoAinspecionar | Collection |
![]() |
Nome dos atributos a comparar | |||||
Resultado | Collection |
![]() |
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 Propriedade | Tipo | Descrição |
attributeName | String | Nome do atributo |
valor | Depende do tipo do atributo | Valor do atributo na entidade |
otherValue | Depende do tipo de atributo | Valor 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 } ]
Produto: 4D
Tema: ORDA - Entidade
Criado por: 4D v17
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)