moodle架构分析—数据连接层的设计(二)

moodle架构分析—数据连接层的设计(二) ORM的实现 Moodle在lib/dmllib.php中实现了ORM机制。常用的函数及用法如下: //查询$table中…

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;

}

//省去其他部分

}

作者: admin

为您推荐

联系我们

联系我们

邮箱:

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部