CakePHP3 _ids形式のデータを送信する

リクエストデータをエンティティに変換したい時の話。
 
CakePHP3のチュートリアルを進めて行くと、説明なしに以下のコードが出現します。

 
第一引数に(フィールド名._ids)形式で値を渡すこの動き。初級エンジニアは混乱するのではないでしょうか?

 

echo $this->Form->control('tags._ids', ['options' => $tags]);

 

どういう意味かというと、idsで指定したデータを一緒にエンティティへと変換してくれます。
 
コントローラーに対して、フェールド名で指定したエンティティの値を送信できるようになります。 

試しにコントローラー側でgetDate()してみると、_idsをキー、エンティティのデータを値に持つ配列が作られていることがわかりますね。

 

 

[
	'user_id' => '1',
	'title' => '今日はいい1日となった',
	'body' => 'カフェで気分転換をしていた',
	'tags' => [
		'_ids' => [
			(int) 0 => '13',
			(int) 1 => '1'
		]
	]
]

 

この状態でpatchEntityすると、tagのデータがそれぞれエンティティに変換されます。
 

バリデーション・保存して、関連するレコードを登録できました。 

以上