## Database connection

There should be only a single db connection each time there is a request. This is why we load the global environmental variables at the beginning of the script, use the db credentials to connect to the database only a single time. If you visit global.php you will see

$global_connection = \Doctrine\DBAL\DriverManager::getConnection($connectionParams);


This connection variable later used in the database.php under modules,

   public function __construct(){
global $global_connection;$this->connection = $global_connection; }  Database object later is called on every time the system object is called. On system.php: $this->db = new database;
$this->connection =$this->db->connect();


Is located on the __construct function and the public $db variable is assigned for easy access on modules. If you write your own custom module and extend the system module, $this->db will give you access to the database layer immediately.

We can also use $queryBuilder since this is basically DBAL (read the documentation here https://www.doctrine-project.org/projects/doctrine-dbal/en/latest/reference/query-builder.html#sql-query-builder) $this->queryBuilder
->select('*')
->from(“table_name”)
->where('id = ?')
->setParameter(0, $id);  And fetch the data: $data = $this->queryBuilder->execute()->fetchAll(\PDO::FETCH_OBJ);  The $data will have the results stored in it as $data[0]->field_name The framework also has built in methods to easily insert, list, update and delete. ### Insert $this->db->insert([array key values],”table_name”);


$this->db->update([array key values],[array identifier key values],”table name”);  ### List $this->db->list(“table name”,”number of results”,”start from record number”);


$this->db->delete([array identifier key values],”table name”);  ### Select $this->db->select(“table name”,[array identifier key values],”number of results”,”start from record number”):


The listed functions are for easy usage, for more complicated sql queries, you should use the queryBuilder.