複数選択できるselectやcheckboxをDBに保存しようとすると配列で値が飛ぶため、エラーになる。

配列から文字列に変換して保存し、取り出したときは文字列から配列へ変換する形で行う。

// コントローラ
$this->set( 'select1', $this->Prefecture->find( 'list', array( 
    'fields' => array( 'id', 'prefecture')
)));

// ビュー
echo $this->Form->input( 'prefecture', array( 
    'type' => 'select', 
    'multiple'=> true,
    'options' => $select1
//  'selected' => $selected  // 規定値は、valueを配列にしたもの
));
// ビューから受け取ったprefecture配列をカンマ区切りに変換
$this->request->data['Model']['prefecture'] = 
    implode( ',', $this->data['Model']['prefecture']);
// 規定値をビューへ渡す
$this->set( 'selected', explode( ',', $this->data['Model']['prefecture']));