HABTMとチェックボックスのchecked属性 [CakePHP 2]

hasAndBelongsToMany(HABTM)のデータについて、Formヘルパーから送信されるデータとFormヘルパーが認識するデータが違う。
ので、save失敗時にチェックボックスのチェック状態を維持するには、コントローラ内で変換が必要?

【Formヘルパーから送信されるデータ】
array(
  ‘Model’ => array(
    ‘field’ => ‘value’
  )
  ‘Habtm’ => array(
    ‘Habtm’ => array(
      (int) 0 => ‘3’,
      (int) 1 => ’12’
    )
  )
)

【Formヘルパーが認識するデータ】
array(
  ‘Model’ => array(
    ‘field’ => ‘value’
  )
  ‘Habtm’ => array(
    (int) 0 => array(
      ‘id’ => (int) 3
    ),
    (int) 1 => array(
      ‘id’ => (int) 12
    )
  )
)

hasAndBelongsToMany(HABTM)のデータについて、Formヘルパーから送信されるデータとFormヘルパーが認識するデータが違う。
ので、save失敗時にチェックボックスのチェック状態を維持するには、コントローラ内で変換が必要?

【Formヘルパーから送信されるデータ】
array(
  ‘Model’ => array(
    ‘field’ => ‘value’
  )
  ‘Habtm’ => array(
    ‘Habtm’ => array(
      (int) 0 => ‘3’,
      (int) 1 => ’12’
    )
  )
)

【Formヘルパーが認識するデータ】
array(
  ‘Model’ => array(
    ‘field’ => ‘value’
  )
  ‘Habtm’ => array(
    (int) 0 => array(
      ‘id’ => (int) 3
    ),
    (int) 1 => array(
      ‘id’ => (int) 12
    )
  )
)

// ビュー
$this->Form->input('Habtm', ['multiple' => 'checkbox']);

// コントローラ
if (isset($this->request->data['Habtm']['Habtm'][0])) {
	$this->request->data['Habtm'] = array_map(function ($id) {
		return ['id' => (int)$id];
	}, $this->request->data['Habtm']['Habtm']);
}