メインコンテンツまでスキップ
バージョン: v20

1対N - アクション

今度は、特定の担当者 (1側のレコード) のためにタスク (N側のレコード) を新規作成する 場合を考えましょう。

親エンティティ さえ特定できていれば、子エンティティを作成するのは少しも難しいことはではありません!

スタータープロジェクトをダウンロードしてください:

addProject アクションを作成する

  • プロジェクトエディターを開いてアクションセクションに移動します。

  • addProject アクションを追加します。

addProject メソッドの作成

On Mobile App Action データベースメソッド

あとは On Mobile App Actionデータベースメソッド内で下記のように addProject アクションの動作を定義するだけです:

: ($request.action="addProjects")

$o:=New object(\
"dataClass";$context.dataClass;\
"parent";$context.parent;\
"entity";$context.entity;\
"parameters";$parameters)

$result:=addProject ($o)


addProject プロジェクトメソッド

addProjectメソッドには以下のコードを入力します:

C_OBJECT($0)
C_OBJECT($1)

C_OBJECT($entity;$in;$out)

$in:=$1
$out:=New object("success";False)

If ($in.dataClass#Null)

$entity:=ds[$in.dataClass].new() // エンティティを作成します

For each ($key;$in.parameters)

$entity[$key]:=$in.parameters[$key]

End for each

$primaryKey:=$in.parent.primaryKey // 親エンティティのプライマリーキーを取得します

$parent:=ds[$in.parent.dataClass].get($primaryKey)

$inverseRelationName:=$in.entity.relationName // 親エンティティのリレーション名を取得します

$entity[$inverseRelationName]:=$parent

$status:=$entity.save() // エンティティを保存します

$out.success:=True // モバイルアプリにアクションの成功を通知します

$out.dataSynchro:=True // モバイルアプリにセレクションのリフレッシュするよう通知します

$out.statusText:="Task added"

$out.close:=True

Else

$out.errors:=New collection("No Selection")

End if

$0:=$out

親エンティティを使用することで、担当者にタスクを追加できるようになりました!

完成したプロジェクトをダウンロード