DataClass
データクラス はデータベーステーブルへのオブジェクトインターフェースを提供します。 4Dアプリケーション内のデータクラスはすべて、ds
データストア のプロパティとして利用可能です。
概要
.attributeName
履歴
リリース | 内容 |
---|---|
19 R3 | .exposed 属性を追加 |
17 | 追加 |
.attributeName : object
説明
データクラスの属性は、 プロパティとして直接利用可能なオブジェクトです 。
返されるオブジェクトのプロパティを読み取ることによって、データクラス属性に関する情報が取得できます。
データクラス属性オブジェクトを編集することは可能ですが、元となるデータベースストラクチャーは変更されません。
返されるオブジェクト
返される属性オブジェクトには以下のプロパティが格納されています:
プロパティ | 型 | 説明 |
---|---|---|
autoFilled | Boolean | 属性値が 4D によって自動生成される場合に true です。 このプロパティは次の 4Dフィールドプロパティに対応しています: 数値型フィールドの "自動インクリメント" および UUID (文字型)フィールドの "自動UUID"。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 |
exposed | Boolean | 属性が REST で公開されている場合に trueです |
fieldNumber | integer | 属性の内部的な 4Dフィールド番号。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 |
fieldType | Integer | 属性の 4Dデータベースフィールドタイプ。 これは属性の種類 (kind ) によります。 とりうる値: .kind = "storage" の場合は、対応する 4Dフィールドタイプ (Value type 参照).kind = "relatedEntity" の場合: 38 (is object ).kind = "relatedEntities" の場合: 42 (is collection ).kind = "calculated" または "alias" の場合: 結果の値 (フィールドタイプ、relatedEntity または relatedEntities) に応じて、上に同じ |
indexed | Boolean | 属性に対して B-tree もしくは クラスターB-Tree インデックスが設定されている場合に true です。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 |
inverseName | Text | リレーション先の属性名。 .kind = "relatedEntity" または "relatedEntities" の場合にのみ返されます。 |
keywordIndexed | Boolean | 属性にキーワードインデックスが存在すれば true です。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 |
kind | Text | 属性の種類。 とりうる値:get 関数 によって定義されます。 |
必須 | Boolean | 属性において Null値の入力が拒否されている場合に true です。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 注記: このプロパティは、4Dデータベースレベルの "Null値の入力を拒否" フィールドプロパティと対応しています。 フィールドのデータ入力制御オプションである既存の "必須入力" プロパティとは無関係です。 |
name | Text | 属性名 (文字列) |
path | Text | リレーションに基づく エイリアス属性 のパ ス。 |
readOnly | Boolean | 読み取り専用属性の場合に trueです。 たとえば、set 関数 を持たない計算属性は読み取り専用です。 |
relatedDataClass | Text | 属性にリレートされているデータクラスの名称。 .kind = "relatedEntity" または "relatedEntities" の場合にのみ返されます。 |
type | Text | 属性の概念的な値タイプ。汎用的なプログラミングに有用です。 これは属性の種類 (kind ) によります。 とりうる値: .kind = "storage" の場合: "blob", "bool", "date", "image", "number", "object", または "string"。 数値型の場合 "number" が返されます (時間を含む)。UUID、文字およびテキスト型フィールドの場合 "string" が返されます。"blob" 属性は BLOB オブジェクト です。.kind = "relatedEntity" の場合: リレートされたデータクラス名.kind = "relatedEntities" の場合: リレートされたデータクラス名 + "Selection" 接尾辞.kind = "calculated" または "alias" の場合: 結果の値に応じて、上に同じ |
unique | Boolean | 属性値が重複不可の場合に true です。 .kind が "relatedEntity" または "relatedEntities" の場合には、このプロパティは返されません。 |
tip
汎用的なプログラミングにおいては、プロパティが返されない場合でも有効な値を取得するため、Bool(attributeName.property)
、Num(attributeName.property)
、または String(attributeName.property)
をプロパティの型に応じて使用することが推奨されます。
例題 1
$salary:=ds.Employee.salary // Employeeデータクラスの salary属性を返します
$compCity:=ds.Company["city"] // Companyデータクラスの city属性を返します
例題 2
以下のストラクチャーを前提とします:
var $firstnameAtt;$employerAtt;$employeesAtt : Object
$firstnameAtt:=ds.Employee.firstname
//{name:firstname,kind:storage,fieldType:0,type:string,fieldNumber:2,indexed:true,
//keyWordIndexed:false,autoFilled:false,mandatory:false,unique:false}
$employerAtt:=ds.Employee.employer
//{name:employer,kind:relatedEntity,relatedDataClass:Company,
//fieldType:38,type:Company,inverseName:employees}
//38=Is object
$employeesAtt:=ds.Company.employees
//{name:employees,kind:relatedEntities,relatedDataClass:Employee,
//fieldType:42,type:EmployeeSelection,inverseName:employer}
//42=Is collection