Custom module (php) - invoking connection

Here an example on how to use the db connection and the sql builder from server connect.

<?php

namespace modules;

use \lib\core\Module;
use \lib\db\Connection;
use \lib\db\SqlBuilder;

// create a module called dbuser
class dbuser extends Module
{
  // get user from database
  public function getuser($options) {
    // connection option is required
    option_require($options, 'connection');
    // userid option is required
    option_require($options, 'userid');

    // parse expressions in the options
    $options = $this->parseOptions($options);

    // get the database connection
    $connection = Connection.get($this->app, $options->connection);

    // query
    $query = 'SELECT * FROM Users WHERE UserId = ?';
    // params
    $params = array($options->userid);

    // execute query
    $results = $connection->execute($query, $params);

    // return only first result or NULL when no results
    return count($results) ? $results[0] : NULL;
  }

  // get user from database (using SqlBuilder)
  public function getuser2($options) {
    // connection option is required
    option_require($options, 'connection');
    // userid option is required
    option_require($options, 'userid');

    // parse expressions in the options
    $options = $this->parseOptions($options);

    // get the database connection
    $connection = Connection.get($this->app, $options->connection);

    // build the sql query and params
    $sql = new SqlBuilder($this->app, $connection);
    $sql->from('Users');
    $sql->where('userid', '=', $options->userid);
    // compile it
    $sql->compile();

    // execute query
    $results = $connection->execute($sql->query, $sql->params);

    // return only first result or NULL when no results
    return count($results) ? $results[0] : NULL;
  }
}
4 Likes