YII 字段映射

原创
2013/12/29 23:56
阅读数 3.5K
YII 字段映射

首先在模型中定义字段映射的方法

class Arctype extends CActiveRecord{
    //定义字段映射
    public $_map = array(
        'typename'=>'a1',
        'topid'=>'a2',
        'sort'=>'a3',
        'shuxing'=>'a4',
    );
    //定义字段映射的方法
    public function mymap($data){
        foreach($data as $k=>$v){
            if(in_array($k,$this->_map)){
                $key = array_search($k,$this->_map);
                $map[$key] = $v;
            }else{
                $map[$k] = $v;
            }
        }
        $this->attributes = $map;
    }
    //使用mymap方法时必须定义rules方法进行安全过滤
    function rules() {
        return array(
            array('typename','required','message'=>'栏目名必须填写'), 
            array('topid','required','message'=>'上级栏目必须填写'),
        );  }
   //使用mymap2方法时不用定义rules方法进行安全过滤
   public function mymap2($data){
        foreach($data as $k=>$v){
            if(in_array($k,$this->_map)){
                $key = array_search($k,$this->_map);
                $this->$key = addslashes($v);
            }else{
                $this->$k = addslashes($v);
            }
        }
    }



在控制器中使用字段映射填充字段

class ArctypeController extends Controller{
    public function actionindex(){
        $data = array(
           'a1'=>'mya1',
           'topid'=>'55',
           'a3'=>'66',
           'shuxing'=>'77', 
        );
        $model = new Arctype();
        $model->mymap($data);//使用字段映射填充字段
        $this->dump($model->attributes);
        $model->save()       
    }


展开阅读全文
yii
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
1 收藏
0
分享
返回顶部
顶部