La méthode entity.fromObject( ) remplit les attributs de l'entité avec le contenu de objet.
Note : Cette méthode modifie l'entité d'origine.
La correspondance entre l'objet et l'entité est établie à partir des noms de propriétés/d'attributs :
- si une propriété de l'objet n'existe pas dans la dataclass, elle est ignorée.
- les types de données traitées doivent être équivalents. Si le type d'une propriété de l'objet est différent de celui de l'attribut homonyme de la dataclass, 4D tente de convertir les données dans la mesure du possible (voir Types de données), sinon l'attribut n'est pas modifié.
objet peut contenir une related entity dans les conditions suivantes :
- objet contient lui-même la clé étrangère, ou
- objet contient une propriété de type objet qui a le même nom que l'entité relative, contenant une seule propriété nommée "__KEY",
- si l'entité relative n'existe pas, elle est ignorée.
Avec l'objet $o suivant :
{
"firstName": "Mary",
"lastName": "Smith",
"salary": 36500,
"birthDate": "1958-10-27T00:00:00.000Z",
"woman": true,
"managerID": 411,// relatedEntity fournie avec clé primaire
"employerID": 20 // relatedEntity fournie avec clé primaire
}
Le code suivant créera une entité avec les entités relatives manager et employer.
C_OBJECT($o)
$entity:=ds.Emp.new()
$entity.fromObject($o)
$entity.save()
Vous pouvez également utiliser une entité relative fournie sous forme d'objet :
{
"firstName": "Marie",
"lastName": "Lechat",
"salary": 68400,
"birthDate": "1971-09-03T00:00:00.000Z",
"woman": false,
"employer": {// relatedEntity fournie sous forme d'objet
"__KEY": "21"
},
"manager": {// relatedEntity fournie sous forme d'objet
"__KEY": "411"
}
}