Better way to update many to many relation in form

Hi

I am curious if there is a more elegant solution for updating a relation field in a form. Currently I have in the model RecommenderGroup




'recommenders' => array(self::MANY_MANY, 'Recommender', 'recommender_to_recommender_group(recommender_group_id, recommender_id)'),



and in the form for the update view




<?php echo $form->dropDownList($model, 'recommenders', CHtml::listData(Recommender::model()->getRecommenders(), 'id', 'name'), array('multiple'=>'multiple', 'key'=>'recommenders', 'class'=>'multiselect')); ?>



To get this to work, I have updated the loadModel method of the RecommenderGroupController like so


 

public function loadModel($id) {

        $model = RecommenderGroup::model()->with('recommenders')->findByPk($id);

        if ($model === null)

            throw new CHttpException(404, 'The requested page does not exist.');


        // Have to return the recommenders as ids or names, not the model objects themselves

        $recommenders = array();

        foreach ($model->recommenders as $recommender) {

                $recommenders[] = $recommender->id;

        }

        $model->recommenders = $recommenders;


        return $model;

    } 



I don’t like having to write that extra code to extract the id from each recommender object.

Is there an easier way to do it in the view. Something like this (which doesn’t work for me)




<?php echo $form->dropDownList($model, 'recommenders.id', CHtml::listData(Recommender::model()->getRecommenders(), 'id', 'name'), array('multiple'=>'multiple', 'key'=>'recommenders', 'class'=>'multiselect')); ?>



Thanks