提交 f63b049f 编写于 作者: weixin_47267244's avatar weixin_47267244

新增支持数据库连接后,执行初始化的 SQL

上级 11c9c658
......@@ -66,6 +66,11 @@ return [
// 'dbClass' => \Imi\Db\Drivers\Mysqli\Driver::class,
// 使用 Swoole MySQL 驱动
// 'dbClass' => \Imi\Db\Drivers\Swoole\Driver::class,
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
// uri 写法
// 'resource' => [
......@@ -125,6 +130,11 @@ return [
// 'dbClass' => \Imi\Db\Drivers\Mysqli\Driver::class,
// 使用 Swoole MySQL 驱动
// 'dbClass' => \Imi\Db\Drivers\Swoole\Driver::class,
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
// uri 写法
// 'resource' => [
......@@ -197,6 +207,11 @@ return [
// 'dbClass' => \Imi\Db\Drivers\Mysqli\Driver::class,
// 使用 Swoole MySQL 驱动
// 'dbClass' => \Imi\Db\Drivers\Swoole\Driver::class,
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
],
// 异步池子,worker进程使用
......@@ -223,6 +238,11 @@ return [
// 'dbClass' => \Imi\Db\Drivers\Mysqli\Driver::class,
// 使用 Swoole MySQL 驱动
// 'dbClass' => \Imi\Db\Drivers\Swoole\Driver::class,
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
[
'host' => '127.0.0.2',
......@@ -238,6 +258,11 @@ return [
// 'dbClass' => \Imi\Db\Drivers\Mysqli\Driver::class,
// 使用 Swoole MySQL 驱动
// 'dbClass' => \Imi\Db\Drivers\Swoole\Driver::class,
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
]
],
],
......@@ -273,6 +298,11 @@ return [
// 'timeout' => '建立连接超时时间',
// 'charset' => '',
// 'strict_type' => false, //开启严格模式,返回的字段将自动转为数字类型
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
],
// 异步池子,worker进程使用
......@@ -291,6 +321,11 @@ return [
// 'timeout' => '建立连接超时时间',
// 'charset' => '',
// 'options' => [], // PDO连接选项
// 数据库连接后,执行初始化的 SQL
// 'sqls' => [
// 'select 1',
// 'select 2',
// ],
],
// uri 写法
// 'resource' => [
......
......@@ -8,4 +8,33 @@ use Imi\Util\Traits\THashCode;
abstract class Base implements IDb
{
use THashCode;
/**
* 连接配置.
*
* @var array
*/
protected $option;
public function __construct(array $option = [])
{
$this->option = $option;
}
/**
* 数据库连接后,执行初始化的 SQL.
*
* @return void
*/
protected function execInitSqls(): void
{
$sqls = $this->option['initSqls'] ?? [];
if ($sqls)
{
foreach ($sqls as $sql)
{
$this->exec($sql);
}
}
}
}
......@@ -24,13 +24,6 @@ class Driver extends Base implements IDb
*/
protected $instance;
/**
* 连接配置.
*
* @var array
*/
protected $option;
/**
* 最后执行过的SQL语句.
*
......@@ -89,7 +82,7 @@ class Driver extends Base implements IDb
{
$option['password'] = '';
}
$this->option = $option;
parent::__construct($option);
$this->isCacheStatement = Config::get('@app.db.statement.cache', true);
$this->transaction = new Transaction();
}
......@@ -121,6 +114,7 @@ class Driver extends Base implements IDb
$option = $this->option;
$this->instance = $instance = new \mysqli($option['host'] ?? '127.0.0.1', $option['username'], $option['password'], $option['database'], $option['port'] ?? 3306);
$instance->set_charset($option['charset'] ?? 'utf8');
$this->execInitSqls();
return true;
}
......
......@@ -23,13 +23,6 @@ class Driver extends Base implements IDb
*/
protected $instance;
/**
* 连接配置.
*
* @var array
*/
protected $option;
/**
* 最后执行过的SQL语句.
*
......@@ -86,7 +79,7 @@ class Driver extends Base implements IDb
{
$option['options'] = [];
}
$this->option = $option;
parent::__construct($option);
$this->isCacheStatement = Config::get('@app.db.statement.cache', true);
$this->transaction = new Transaction();
}
......@@ -147,6 +140,7 @@ class Driver extends Base implements IDb
{
$option = $this->option;
$this->instance = new \PDO($this->buildDSN(), $option['username'], $option['password'], $option['options']);
$this->execInitSqls();
return true;
}
......
......@@ -25,13 +25,6 @@ class Driver extends Base implements IDb
*/
protected $instance;
/**
* 连接配置.
*
* @var array
*/
protected $option;
/**
* 最后执行过的SQL语句.
*
......@@ -79,7 +72,7 @@ class Driver extends Base implements IDb
*/
public function __construct($option = [])
{
$this->option = $option;
parent::__construct($option);
$this->isCacheStatement = Config::get('@app.db.statement.cache', true);
$this->transaction = new Transaction();
}
......@@ -125,8 +118,13 @@ class Driver extends Base implements IDb
{
$serverConfig = array_merge($serverConfig, $option['options']);
}
$result = $instance->connect($serverConfig);
if ($result)
{
$this->execInitSqls();
}
return $instance->connect($serverConfig);
return $result;
}
/**
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册