ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com

ホーム

 
4D v19.8
entitySelection.extract( )

entitySelection.extract( ) 


 

entitySelection.extract ( propertyPath {; targetPath}{; propertyPath2 ; targetPath2 ; ... ; propertyPathN ; targetPathN}{; option}) -> 戻り値 
引数   説明
propertyPath  テキスト in 返されるコレクションに取得したい値のプロパティパス
targetPath  テキスト in ターゲットプロパティパスまたはプロパティ名
option  倍長整数 in ck keep null: 返されるコレクションの中にnull プロパティを含めます(デフォルトでは無視されます)。この引数はtargetPath が渡されていた場合には無視されます。
戻り値  コレクション in 取得された値を格納したコレクション

説明   

entitySelection.extract( ) メソッドは、propertyPath 引数で指定した値をエンティティセレクションから取得し、その値を格納したコレクションを返します。

propertyPath では、以下のものを指定することができます:

  • スカラーデータクラス属性
  • リレートされたエンティティ(単数)
  • リレートされたエンティティ(複数)

propertyPath 引数が無効だった場合、空のコレクションが返されます。

このメソッドは2種類のシンタックスを受け入れます。

このシンタックスを使用すると、entitySelection.extract( ) はエンティティセレクションの中の、propertyPath 引数で指定した値のコレクションを作成して返します。

デフォルトで、propertyPath で指定した値がnull または未定義のエンティティは返されるコレクション内では無視されます。option 引数にck keep null 定数を渡すことで、これらの値を、返されたコレクション内にnull 要素として含めるようにすることができます。

  • dataClassAttribute.kind = "relatedEntity" であるデータクラス属性は、エンティティのコレクションとして取得されます(重複したものも保持されます)。
  • dataClassAttribute.kind = "relatedEntities" であるデータクラス属性は、エンティティセレクションのコレクションとして取得されます。

このシンタックスを使用すると、entitySelection.extract( ) は引数で指定したpropertyPath プロパティを持つコレクションを作成し返します。このコレクションのそれぞれの要素は、targetPath 引数のプロパティと、対応するpropertyPath 引数のプロパティを格納したオブジェクトです。Null 値は保持されます(option 引数はこのシンタックスでは無視されます)。

複数のpropertyPath 引数が渡された場合、それぞれに対してtargetPath 引数を渡す必要があります。有効な[propertyPath targetPath]のペアのみが取得されます。

  • dataClassAttribute.kind = "relatedEntity" であるデータクラス属性は、エンティティとして取得されます。
  • dataClassAttribute.kind = "relatedEntities" であるデータクラス属性は、エンティティセレクションとして取得されます。

注: []記法を使用してアクセスしたエンティティのコレクションのエンティティは、データベースからは再読み込みはされません。

例題  

以下のテーブルとリレーションが与えられている場合を考えます:

 C_COLLECTION($firstnames;$addresses;$mailing;$teachers)
 C_OBJECT($status)
  //
  //
  //$firstnames は文字列のコレクション
 $firstnames:=ds.Teachers.all().extract("firstname")
  //
  //$addresses はデータクラス属性にリレートされたエンティティのコレクション
  //address のNull 値は取得・保持されます
 $addresses:=ds.Teachers.all().extract("address";ck keep null)
  //
  //
  //$mailing は"who" および "to"のプロパティを持つオブジェクトのコレクション
  //"who" プロパティの中身は文字列型
  //"to" プロパティの中身はエンティティ型(Address データクラス)
 $mailing:=ds.Teachers.all().extract("lastname";"who";"address";"to")
  //
  //
  //$mailing は"who" および "city" のプロパティを持つオブジェクトのコレクション
  //"who" プロパティの中身は文字列型
  //"city" プロパティの中身は文字列型
 $mailing:=ds.Teachers.all().extract("lastname";"who";"address.city";"city")
  //
  //$teachers は"where" および "who" のプロパティを持つオブジェクトのコレクション
  //"where" プロパティの中身は文字列型
  //"who" プロパティの中身はエンティティセレクション(Teachersデータクラス)
 $teachers:=ds.Address.all().extract("city";"where";"teachers";"who")
  //
  //$teachers はエンティティセレクションのコレクション
 $teachers:=ds.Address.all().extract("teachers")



参照 

collection.extract( )

 
プロパティ 

プロダクト: 4D
テーマ: ORDA - エンティティセレクション

 
ページの目次 
 
履歴 

初出: 4D v18 R3

 
ARTICLE USAGE

ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)