【ThinkPHP+Oracle】ThinkPHP5.1.x+Oracle主键是sys_guid()

ThinkPHP5.1.x框架处理ORACLE数据库(这里是基于5.1.35)

1、首先通过composer安装think-oracle V2.*版本的插件。(thinkphp5.1 需要2.0版本以上)
2、使用的场景是所有表的主键是32位不相同是字符串,oracle中默认使用sys_guid()生成。
3、无需自增,则无需序列,也无需触发器。
4、修改框架:
a.首先在最外面common.php加入全局方法sys_guid()

/**
 * ORACLE sys_guid()
 * @return string
 */
function sys_guid(){
    return sprintf('%04X%04X%04X%04X%04X%04X%04X%04X', mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(16384, 20479), mt_rand(32768, 49151), mt_rand(0, 65535), mt_rand(0, 65535), mt_rand(0, 65535));
}

b.其次找到thinkphp\library\think\Model.php文件,第653行(修改insertData方法)
【ThinkPHP+Oracle】ThinkPHP5.1.x+Oracle主键是sys_guid()_第1张图片
c.找到thinkphp\library\think\db\Connection.php 修改如下:
【ThinkPHP+Oracle】ThinkPHP5.1.x+Oracle主键是sys_guid()_第2张图片
【ThinkPHP+Oracle】ThinkPHP5.1.x+Oracle主键是sys_guid()_第3张图片
d.即可使用model中的save进行自如的oracle数据插入与更新。

$model = new Admin();
$data = [
...
];
$flag = $model->save( $data );//完成数据插入,返回true
echo $model->id;//获得最新一条数据的主键

你可能感兴趣的:(PHP)