Database
Koldy framework provides easy database querying either through raw statements or by using its simple ActiveRecord implementation. You are not encouraged to write SQL statements unless there's no other way.
All database queries can be simply logged if you enable sql
in Log config. When using framework's ORM, all generated SQL statements will be nicely formatted and logged so you can troubleshoot it easily.
We highly recommend that you enable sql
file log in development and monitor your log file with Less, Tail or any other program that can show appends to a file. By doing that, you'll see all database queries you call using framework's methods.
Configuration
Configuration for databases you want to access should be placed in configs directory and it has to be pointer config style.
Configuration example:
<?php
return [
'default' => 'admin',
'website' => [
'type' => 'mysql',
'host' => '127.0.0.1',
'port' => 3306,
'username' => 'vagrant',
'password' => 'vagrant',
'database' => 'vagrant',
'persistent' => true,
'adapter_options' => [
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true
]
],
'admin' => [
'type' => 'postgres',
'host' => '127.0.0.1',
'port' => 5432,
'username' => 'vagrant',
'password' => 'vagrant',
'database' => 'vagrant',
'persistent' => true,
'schema' => 'public'
],
'file' => [
'type' => 'sqlite',
'path' => 'storage:data/mydb.sqlite'
],
'file2' => [
'type' => 'sqlite',
'path' => '/var/db/mydb.sqlite'
]
];
As you can see in examples above, it is key-value configuration. Keys are database adapter connection name, so in this example, database connection names are default
, website
, admin
, file
and file2
.
When you try to use database and you don't provide adapter name, framework will try to use the first key from configuration. Since this is pointer config file and default
points to admin
, admin
adapter connection will be used by default.
In the configuration example above, you have example of connecting to MySQL, PostgreSQL and Sqlite databases. All these configuration blocks are similar, but each database has slightly different configuration options which can be found in the following sections.
If you need to get the database Config instance for some reason, please use:
$config = \Koldy\Db::getConfig();
MySQL
To setup connection to MySQL database, use the following config options:
key | description | value |
---|---|---|
type | The connection type, used by framework | required: mysql |
host | Host name of database, can be IP or domain | required |
port | Database port | optional, 3306 by default |
username | Database username | required, or leave empty string |
password | Database username | required, or leave empty string |
database | Database name on which you're trying to connect | required |
persistent | Boolean flag weather you want your connections to be persistent | required |
adapter_options | Array of additional PDO constant options | optional, check PDO MySQL |
PostgreSQL
To setup connection to MySQL database, use the following config options:
key | description | value |
---|---|---|
type | The connection type, used by framework | required: postgres |
host | Host name of database, can be IP or domain | required |
port | Database port | optional, 5432 by default |
username | Database username | required, or leave empty string |
password | Database username | required, or leave empty string |
database | Database name on which you're trying to connect | required |
persistent | Boolean flag weather you want your connections to be persistent | required |
schema | The schema you're connecting to | optional |
adapter_options | Array of additional PDO constant options | optional |
Sqlite
To setup connection to MySQL database, use the following config options:
key | description | value |
---|---|---|
type | The connection type, used by framework | required: sqlite |
path | Path to database file | required |
adapter_options | Array of additional PDO constant options | optional |
If path starts with storage:
, then file path will be relative to the application's storage directory.