4D v19

entitySelection.extract( )

ホーム

 
4D v19
entitySelection.extract( )

entitySelection.extract( )  


 

説明  

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 - エンティティセレクション

 
ページの目次 
 
履歴 

 
ARTICLE USAGE

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