1.创建kingbase连接类
复制 \vendor\laravel\framework\src\Illuminate\Database\Connectors\PostgresConnector.php改名KingBaseConnector.php
KingBaseConnector.php 文件修改如下
1.1 PostgresConnector修改成KingBaseConnector
1.2 pgsql: 改成kdb:
2.修改工产类
文件路径:\vendor\laravel\framework\src\Illuminate\Database\Connectors\ConnectionFactory.php
2.1 createConnector方法修改如下:
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']}]."),
};
添加kingbase数据类型指向新创建的kingbase连接类
2.2createConnection方法修改如下:
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}]."),
};
路径:\vendor\laravel\framework\src\Illuminate\Database\
添加kingbase数据类型指向,复制PostgresConnection.php类改名KingBaseConnection.php
3. 修改数据库驱动
3.1新建kingbase驱动类如下
<?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';
}
}
3.2修改驱动类指向
protected function getDoctrineDriver()
{
return new KingBaseDriver;
}
4.修改database配置
4.1 修改/config/database.php配置文件,添加kingbase配置
'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',
'prefix' => env('DB_PREFIX', ''),
'prefix_indexes' => true,
'search_path' => 'public',
'sslmode' => 'prefer',
],
4.2修改.env DB配置。