首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >laravel&lumen 连接金仓数据库(KingBase)

laravel&lumen 连接金仓数据库(KingBase)

原创
作者头像
如梦初醒_-
发布2025-07-09 17:28:16
发布2025-07-09 17:28:16
2150
举报
文章被收录于专栏:最后一声蝉鸣最后一声蝉鸣

#安装php扩展pdo_kdb(人大金仓对应php扩展)

PHP配置连接KingbaseES — KingbaseES产品手册

https://help.kingbase.com.cn/v8/development/client-interfaces/php-pdo/php-pdo-2.html#linux-php

下载后,将pdo_kdb.so放到php包扩展目录

#查看扩展包位置

php -i |grep 'extension_dir'     

#查看拓展是否安装成功

php -m|grep 'pdo_kdb'

#创建kingbase连接类

复制 \vendor\laravel\framework\src\Illuminate\Database\Connectors\PostgresConnector.php改名KingBaseConnector.php

#修改KingBaseConnector.php 文件

代码语言:txt
复制
PostgresConnector修改成KingBaseConnector

pgsql: 改成kdb:

#修改工产类

文件路径:\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php

#修改 createConnector 方法

代码语言:txt
复制
        return match ($config['driver']) {
            'mysql' => new MySqlConnector,
            'pgsql' => new PostgresConnector,
            'sqlite' => new SQLiteConnector,
            'sqlsrv' => new SqlServerConnector,
            'kingbase' => new KingBaseConnector,
            default => throw new InvalidArgumentException("Unsupported driver [{$config['driver']}]."),
        };

#修改createConnection方法

代码语言:txt
复制
        return match ($driver) {
            'mysql' => new MySqlConnection($connection, $database, $prefix, $config),
            'pgsql' => new PostgresConnection($connection, $database, $prefix, $config),
            'sqlite' => new SQLiteConnection($connection, $database, $prefix, $config),
            'sqlsrv' => new SqlServerConnection($connection, $database, $prefix, $config),
            'kingbase' => new KingBaseConnection($connection, $database, $prefix, $config),
            default => throw new InvalidArgumentException("Unsupported driver [{$driver}]."),
        };

#添加kingbase数据类型指向新创建的kingbase连接类

路径: \vendor\laravel\framework\src\Illuminate\Database\

复制PostgresConnection.php类改名KingBaseConnection.php

#修改数据库驱动

\vendor\laravel\framework\src\Illuminate\Database\PDO 新建kingbase驱动类

代码语言:txt
复制
<?php
 
namespace Illuminate\Database\PDO;
 
use Doctrine\DBAL\Driver\AbstractPostgreSQLDriver;
use Illuminate\Database\PDO\Concerns\ConnectsToDatabase;
 
class KingBaseDriver extends AbstractPostgreSQLDriver
{
    use ConnectsToDatabase;
 
    /**
     * {@inheritdoc}
     */
    public function getName()
    {
        return 'pdo_kdb';
    }
}

#修改KingBaseConnection.php

代码语言:txt
复制
  protected function getDoctrineDriver()
    {
        return new KingBaseDriver;
    }

#修改database配置

修改/config/database.php配置文件,添加kingbase配置

代码语言:txt
复制
        'kingbase' => [
            'driver' => 'kingbase',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '5432'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'charset' => 'utf8',
            'schema' => 'test',
            'prefix' => env('DB_PREFIX', ''),
            'prefix_indexes' => true,
            'search_path' => 'public',
            'sslmode' => 'prefer',
        ],

#修改.env 文件

修改数据库配置

#使用

代码语言:txt
复制
    public function test()
    {
        try {
            $res =  DB::connection("kingbase")->select("select * from order");
            var_dump(111);
            var_dump($res);
        }catch (Exception $e)
        {
            var_dump(222);
            var_dump($e->getMessage());
        }
       // echo 'HelloWorld';
    }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • #安装php扩展pdo_kdb(人大金仓对应php扩展)
  • #查看拓展是否安装成功
  • #创建kingbase连接类
    • #修改KingBaseConnector.php 文件
  • #修改工产类
    • #修改 createConnector 方法
    • #修改createConnection方法
  • #添加kingbase数据类型指向新创建的kingbase连接类
  • #修改数据库驱动
  • #修改KingBaseConnection.php
  • #修改database配置
  • #修改.env 文件
  • #使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档