Begnini,
Faz assim, o campo que você vai salvar, coloca ele como text ou varchar(255).
De inicio, você salva todo o array selecionado em 1 atributo no banco de dados, mais pra frente com mais experiência e calma você cria um outra tabela somente para receber esses atributos.
Quando selecionado os itens, ele submete o formulário para o actionCreate() ou actionUpdate().
Antes do $model->attributes = $_POST
Você adiciona a váriavel que será dos checkbox selecionado, vamos supor que o nome do atributo do banco seja ‘opcional’
$model->opcional = json_encode($_POST['Produto']['opcional']);
$model->attributes = $_POST['Produto'];
Depois com um tempo, você pode fazer isso dentro do seu Model, usando a função beforeValidate().
Olha o exemplo do array, de como ele vai ser salvo no banco de dados:
$arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
Banco de dados:
{"a":1,"b":2,"c":3,"d":4,"e":5}
Até ae tudo bem, agora vamos resgatar esse valores do banco de dados e mostrar no checkBoxList();
Antes do $form->checkBoxList(), adicione a váriavel que é do opcional:
$model->opcional = json_decode($model->opcional, true);
$form->checkBoxList(...);
Ele pega o que foi encodado pelo json_encode, e transforma novamente em array, o resto o Yii da conta do recado.