entity.fromObject( ) メソッドは、object 引数で指定したコンテンツをエンティティに渡します。
注: このメソッドは元のエンティティを書き換えます。
オブジェクトとエンティティ間でのマッピングは属性名で行われます:
- オブジェクトのプロパティがデータクラス内の存在しない場合、それは無視されます。
- データタイプは同じである必要があります。オブジェクトとデータクラス間で型が合致しない場合、4D は可能であればデータを変換しようとし(データタイプ参照)、それ以外の場合には属性はそのままになります。
object 引数のオブジェクトは、以下の条件のいづれかを満たしている場合にはリレートエンティティを扱うことができます:
- object が外部キーを格納している
- object が、"__KEY"という名前の単一のプロパティを格納しているプロパティオブジェクトを格納しており、その名前がリレートエンティティと同じ名前である
- リレートエンティティが存在しない場合、無視されます。
以下のような$o オブジェクトがある場合:
{
    "firstName": "Mary",
    "lastName": "Smith",
    "salary": 36500,
    "birthDate": "1958-10-27T00:00:00.000Z",
    "woman": true,
    "managerID": 411,// プライマリーキーを持つリレートエンティティ
    "employerID": 20 // プライマリーキーを持つリレートエンティティ
}以下のコードを実行すると、manager と employerというリレートエンティティを持つエンティティを作成します。
 C_OBJET($o)
 $entity:=ds.Emp.new()
 $entity.fromObject($o)
 $entity.save()
また、オブジェクトとして提供されたリレートエンティティを使用することもできます:
{
    "firstName": "Marie",
    "lastName": "Lechat",
    "salary": 68400,
    "birthDate": "1971-09-03T00:00:00.000Z",
    "woman": false,
    "employer": {// オブジェクトとして提供されたリレートエンティティ
        "__KEY": "21"
    },
    "manager": {// オブジェクトとして提供されたリレートエンティティ
        "__KEY": "411"
    }
}