How to add to arrays in models?
I'm pretty sure 'default'=&gt;[] isn't doing anything so it's probably not necessary.

If you wanted to force a single attribute to be of a specific model, you could use:

'courierShippingItems'  =&gt; array('type' =&gt; AttributeType::Mixed, 'model' =&gt; 'Shipper_ShippingItemModel');


Regardless, you'll want to use BaseModel's setAttribute to do what you're trying to do and build your entire array up first before assigning it to the attribute.  Something like this:

$shippingItems[] = Shipper_ShippingItemModel::populateModel($data);

$results-&gt;setAttribute('courierShippingItems', $shippingItems);