Plugin only saving one column in database
I had a similar problem, ended up using multiple setAttribute() calls instead of setAttributes().

I created an array of attributes separately and then looped through them and called setAttribute for each one, seemed to do the trick.

if ($id = $model-&gt;getAttribute('id')) {
    if (null === ($record = $this-&gt;myRecord-&gt;findByPk($id))) {
            throw new Exception(Craft::t('Can\'t find item with ID "{id}"', array('id' =&gt; $id)));
        }
    } else {
        $record = $this-&gt;myRecord-&gt;create();
    }

    /* Not this: */       
    $record-&gt;setAttributes($model-&gt;getAttributes());

    /* This instead: */
    $attributes = array(
        'column1' =&gt; $col1,
        'column2' =&gt; $col2
    );    
    foreach($attributes as $k =&gt; $v) $record-&gt;setAttribute($k,$v);
}