surveys.com.cn
moodle架构分析---数据连接层的设计(二)
  • 提交:天一
  • 时间:10-05-17 10:31
  • 更新:10-05-17 10:31

ORM的实现




Moodlelib/dmllib.php中实现了ORM机制。常用的函数及用法如下:



//查询$table中符合条件的记录是否存在


function record_exists($table, $field1='', $value1='', $field2='', $value2='', $field3='', $value3='');



//获取$table中符合条件的记录


function get_record($table, $field1, $value1, $field2='', $value2='', $field3='', $value3='', $fields='*') ;



//插入数据对象$dataobject$table


function insert_record($table, $dataobject, $returnid=true, $primarykey='id') ;



这些函数遍布moodle业务逻辑层的各个角落。由于数据库连接对象的存在,屏蔽了底层数据库之间的差异,使得这部分的实现就变得异常简单。在需要使用数据库连接对象之前,只首先引用lib/setup.php中创建的$db对象,



global $db;



即可调用底层数据库操作了。



下面以insert_record来说明。



function insert_record($table, $dataobject, $returnid=true, $primarykey='id') {


    //引用$db对象


    global $db, $CFG, $empty_rs_cache;



        //中间省去SQL语句生成的部分和缓存部分



/// 执行插入操作


    if (!$rs = $db->Execute($insertSQL)) {


        debugging($db->ErrorMsg() .'<br /><br />'.s($insertSQL));


        if (!empty($CFG->dblogerror)) {


            $debug=array_shift(debug_backtrace());


            error_log("SQL ".$db->ErrorMsg()." in {$debug['file']} on line {$debug['line']}. STATEMENT: $insertSQL");


        }


        return false;


    }


   


    //省去其他部分

}

文章推荐

    Loading...

人气排行

    Loading...
[ 简体中文 ] [ 简改蓝 ] 管理模式
Copyright ©2005 - 2008 www.emoodle.org
Processed in 0.354(s) Powered by Hutula 1.0

浙ICP备08007391号-1