勾股OA在线文档

原生查询

Db类支持原生SQL查询操作,原生查询仅支持Db类操作,不支持在模型中调用原生查询方法,主要包括两个方法:query和execute。

query方法
query方法用于执行SQL查询操作,返回查询结果数据集(数组)。

使用示例:

Db::query("select * from oa_user where status=:id", ['id' => 1]);

如果你当前采用了分布式数据库,并且设置了读写分离的话,query方法默认是在读服务器执行,而不管你的SQL语句是什么。

如果希望从主库读取,可以使用

Db::query("select * from oa_user where status=:id", ['id' => 1], true);

execute方法
execute用于更新和写入数据的sql操作,如果数据非法或者查询错误则返回false ,否则返回影响的记录数。

使用示例:

Db::execute("update oa_user set name='gouguoa' where status=1");

如果你当前采用了分布式数据库,并且设置了读写分离的话,execute方法始终是在写服务器执行,而不管你的SQL语句是什么。

参数绑定
支持在原生查询的时候使用参数绑定,包括问号占位符或者命名占位符,例如:

Db::query("select * from oa_user where id=? AND status=?", [8, 1]);
// 命名绑定
Db::execute("update oa_user set name=:name where status=:status", ['name' => 'gouguoa', 'status' => 1]);

注意不支持对表名使用参数绑定