mirror of
https://github.com/Karaka-Management/Developer-Guide.git
synced 2026-01-11 20:38:42 +00:00
81 lines
2.2 KiB
Markdown
81 lines
2.2 KiB
Markdown
# Database Connection
|
|
|
|
A database connection can be created manually with the respective database connection model, with the database connection factory or with the database pool which also manages multiple database connections.
|
|
|
|
## Database Connection
|
|
|
|
A connection takes an array which contains the database connection information and create the connection:
|
|
|
|
```php
|
|
$con = new MysqlConnection([
|
|
'db' => 'mysql', /* db type */
|
|
'host' => '127.0.0.1', /* db host address */
|
|
'port' => '3306', /* db host port */
|
|
'login' => 'root', /* db login name */
|
|
'password' => 'root', /* db login password */
|
|
'database' => 'oms', /* db name */
|
|
]);
|
|
```
|
|
|
|
With `getStatus()` you can check the status of the connection.
|
|
|
|
## Database Factory
|
|
|
|
The connection factory automatically creates the correct connection based on the database definition:
|
|
|
|
```php
|
|
$con = ConnectionFactory::create([
|
|
'db' => 'mysql', /* this is used by the connection factory to pick the correct connection */
|
|
'host' => '127.0.0.1',
|
|
'port' => '3306',
|
|
'login' => 'root',
|
|
'password' => 'root',
|
|
'database' => 'oms',
|
|
]);
|
|
```
|
|
|
|
### Database types
|
|
|
|
Available database types/constants can be found in the the `DatabaseType.php` file:
|
|
|
|
```php
|
|
public const MYSQL = 'mysql'; /* MySQL */
|
|
public const SQLITE = 'sqlite'; /* SQLITE */
|
|
public const PGSQL = 'pgsql'; /* PostgreSQL */
|
|
public const SQLSRV = 'mssql'; /* Microsoft SQL Server */
|
|
```
|
|
|
|
Example usage:
|
|
```php
|
|
DatabaseType::MYSQL;
|
|
```
|
|
|
|
## Database Pool
|
|
|
|
Existing database connections can be added to the database pool:
|
|
|
|
```php
|
|
$dbPool = new DatabasePool();
|
|
$dbPool->add('read', $con1);
|
|
$dbPool->add('write', $con2);
|
|
|
|
$dbPool->get('read'); // returns $con1
|
|
```
|
|
|
|
This allows to create different database connections with different permissions or handling database connections with different databases.
|
|
|
|
A new database connection can also be directly created by the database pool:
|
|
|
|
```php
|
|
$dbPool = new DatabasePool();
|
|
$dbPool->create('read',
|
|
[
|
|
'db' => 'mysql',
|
|
'host' => '127.0.0.1',
|
|
'port' => '3306',
|
|
'login' => 'root',
|
|
'password' => 'root',
|
|
'database' => 'oms',
|
|
]
|
|
);
|
|
``` |