ecmall的模型用法

/*
除本基类文件外,所有的模型类的类名的构造规则应该是模型名(首字母大写)+model组成,文件名必须是模型名+.model组成
如有一个用户模型,模型名为user,则其文件名应为user.model.php,类名为UserModel
        验证规则和默认值
        $required = (isset($_v['required']) && $_v['required']) ? true : false;
        $type  = isset($this->_autov[$_k]['type']) ? $this->_autov[$_k]['type'] : 'string';
        $min  = isset($this->_autov[$_k]['min']) ? $this->_autov[$_k]['min'] : 0;
        $max  = isset($this->_autov[$_k]['max']) ? $this->_autov[$_k]['max'] : 0;
        $filter = isset($this->_autov[$_k]['filter']) ? $this->_autov[$_k]['filter'] : ''; //过滤器支持多个,使用“,”隔开
        $valid= isset($this->_autov[$_k]['valid']) ? $this->_autov[$_k]['valid'] : '';  //自定义验证规则
        $reg  = isset($this->_autov[$_k]['reg']) ? $this->_autov[$_k]['reg'] : '';
        $default = isset($this->_autov[$_k]['default']) ? $this->_autov[$_k]['default'] : '';
        
        find()方法的参数
        
        $arr = array(
            'include'  => array(),  //这个不知道是做什么的,有待研究
            'join'=> '',  //left join 多个时使用","隔开
            'conditions' => '',  //where 条件,如果是数字就当做主键的值,如果是字符串就是SQL,如果是数组就被当做IN子句来使用即可,如果需要使用子查询,就自己写SQL吧、
            'order'      => '', 
            'fields'     => '',  //字段
            'limit'      => '',   
            'count'      => false, 
            'index_key'  => $this->prikey,
        );
        
        关联模型的关系配置笔记
        1、如果有belang_to 和 多对多的关系需要设置反向关系
        2、依赖的设置使用在模型的数据删除上,如果数据被其他数据依赖,数据删除后,依赖也应该删除的
        
        添加数据每条记录必须为一个数组
        一个data的例子
        $data = array(
                    array(
                        'title' => '这是一个例子!',
                        'code'=>'test',
                        'cate_id'=> '0'
                    ),
                    array(
                        'title' => '这又是一个例子!',
                        'code'=>'test',
                        'cate_id'=> '0'
                    )
        );
*/

自己配置模型的注意事项:

1、成员初始化,这几个变量是必须要设定的

    var $table  = 'article';  定义表名
    var $prikey = 'article_id'; //定义主要键
    var $_name  = 'article'; //定义模型名称

2、初始化自动验证,规则如上面所示

    /* 添加编辑时自动验证 */
    var $_autov = array(
        'title' => array(
            'required'  => true,    //必填 
            'min'       => 1,       //最短1个字符
            'max'       => 100,     //最长100个字符
            'filter'    => 'trim',
        ),
        'sort_order'  => array(
            'filter'    => 'intval',
        ),
        'cate_id'  => array(
            'min'       => 1,
            'required'  => true,    //必填
        ),
        'link'  => array(
            'filter'    => 'trim',
            'max'       => 255,     //最长100个字符
        ),
    );

3、关系的规则

    var $_relation = array(
        // 一篇文章只能属于一个店铺
        'belongs_to_store' => array(
            'model'             => 'store',
            'type'              => BELONGS_TO,
            'foreign_key'       => 'store_id',
            'reverse'           => 'has_article',
        ),
        // 一篇文章只能属于一个文章分类
        'belongs_to_acategory' => array(
            'model'             => 'acategory',
            'type'              => BELONGS_TO,
            'foreign_key'       => 'cate_id',
            'reverse'           => 'has_article',  //对应acategory
        ),
         //一个文章对应多个上传文件
        'has_uploadedfile' => array(
            'model'             => 'uploadedfile',
            'type'              => HAS_MANY,
            'foreign_key' => 'item_id',
            'ext_limit' => array('belong' => BELONG_ARTICLE),
            'dependent' => true
        ),
    );

关系模型需要注意的几个地方就是:

  1、关系采用链接方式全部都是使用左联结的方式处理的。

  2、属于关系和多对多关系必须指明反响关系

  3、has_one和has_many关系后面可以使用关系dependent,用于删除数据时,自动删除依赖,比如文章分类拥有多个文章,依赖关系配置为 true删除分类的时候,自动删除分类下面的文章。

posted @ 2013-03-11 09:33  linksgo2011  阅读(399)  评论(0编辑  收藏  举报