[tr][td]moodle架构分析---数据连接层的设计(二)
ORM的实现 Moodle在lib/dmllib.php中实现了ORM机制。常用的函数及用法如下: //查询$table中符合条件的记录是否存在 functionrecord_exists($table,$field1='',$value1='',$field2='',$value2='',$field3='',$value3=''); //获取$table中符合条件的记录 functionget_record($table,$field1,$value1,$field2='',$value2='',$field3='',$value3='',$fields='*'); //插入数据对象$dataobject到$table中 functioninsert_record($table,$dataobject,$returnid=true,$primarykey='id'); 这些函数遍布moodle业务逻辑层的各个角落。由于数据库连接对象的存在,屏蔽了底层数据库之间的差异,使得这部分的实现就变得异常简单。在需要使用数据库连接对象之前,只首先引用lib/setup.php中创建的$db对象, global$db; 即可调用底层数据库操作了。 下面以insert_record来说明。 functioninsert_record($table,$dataobject,$returnid=true,$primarykey='id'){ //引用$db对象 global$db,$CFG,$empty_rs_cache; //中间省去SQL语句生成的部分和缓存部分 ///执行插入操作 if(!$rs=$db->Execute($insertSQL)){ debugging($db->ErrorMsg().' '.s($insertSQL)); if(!empty($CFG->dblogerror)){ $debug=array_shift(debug_backtrace()); error_log("SQL".$db->ErrorMsg()."in{$debug['file']}online{$debug['line']}.STATEMENT:$insertSQL"); } returnfalse; } //省去其他部分 } 更多Moodle信息:http://www.aieln.com/system/moodle/ [/td][/tr] |
|