Característica DBModel

La característica DBModel es un Trait que se añade como rasgo a aquellos modelos que necesiten de conexión a base de datos.

use Ocrend\Kernel\Models\Traits\DBModel

Cómo conectarse a una base de datos

Se necesita crear un modelo que se pueda conectar a la base de datos, para ello éste debe tener la siguiente estructura


namespace app\models;

use app\models as Model;
use Ocrend\Kernel\Models\Models;
use Ocrend\Kernel\Models\IModels;
use Ocrend\Kernel\Models\ModelsException;
use Ocrend\Kernel\Models\Traits\DBModel;
use Ocrend\Kernel\Router\IRouter;

class Ejemplo extends Models implements IModels {
	# Usar la característica DBModel
	use DBModel;

    public function __construct(IRouter $router = null) {
        parent::__construct($router); 
		# Construir la conexión
		$this->startDBConexion();
    }

    public function __destruct() {
        parent::__destruct();
		# Terminar la conexión
		$this->endDBConexion();
    }
}						
					

NOTA: Con dicha configuración, el modelo tomará los atributos configurados en database/ de Config.ini.yml

Crear modelo con DBModel usando el generador

Otra forma de crear un modelo que pueda conectarse con la base de datos, es usando el generador de código el cual sin falla alguna escribirá todo el código necesario para que el modelo quede funcional.

php gen.php app:m Prueba -db

La consola deberá indicar si se creó el modelo con éxito, en caso de que ya exista un modelo con ese nombre, no será creado

El trait DBModel

El trait DBModel está ubicada en el namespace Ocrend/Kernel/Models/Traits/DBModels. Es un rasgo que se añade a todos los modelos que necesiten realizar operaciones con la base de datos.

Método / Atributo Función
protected $db Tiene la instancia de la conexión con la base de datos actual.
protected startDBConexion Inicializa la conexión con una base de datos.
$databaseConfig = null Configuración de conexión con base de datos, arreglo
  • 'name' => string Nombre de la base de datos a conectar
  • 'motor' => string Motor de la base de datos a conectar
  • 'new_instance' => Booleano Establecer como true para obtener una nueva instancia distinta a alguna ya existente
protected endDBConexion Cierra la conexión con la base de datos.

El atributo $this->db

Una vez que se añade la característica DBModel a un modelo, el modelo hereda el atributo $db, éste es una instancia de Ocrend\Kernel\Database\Database que, a su vez, es una herencia de PDO PHP

Método Función
public Start() : Database Inicia la instancia de conexión, si ésta ya ha sido declarada antes, no la duplica y ahorra memoria.
$name = null Nombre de la base de datos a conectar
$motor = null Motor de la base de datos a conectar
bool $new_instance = false Establecer en true para iniciar una nueva instancia (al querer conectar a una DB distinta)
public __construct() Inicia la conexión con la base de datos seleccionada.
string $name Nombre de la base de datos a conectar
string $motor Motor de la base de datos a conectar
public fetch_array() : array Devuelve un arreglo asociativo de todos los resultados arrojados por una query
PDOStatement $query valor devuelto de la query
public rows() : int Consigue el numero de filas encontradas después de un SELECT
PDOStatement $query valor devuelto de la query
public scape() : mixed Sana un valor para posteriormente ser introducido en una query
mixed $e valor a sanar
public delete() : PDOStatement Borra una serie de elementos de forma segura de una tabla en la base de datos
string $table Tabla a la cual se le quiere remover un elemento
string $where Condición de borrado que define quien/quienes son dichos elementos
string $limit = 'LIMIT 1' Por defecto se limita a borrar un solo elemento que cumpla el $where
public insert() : PDOStatement Inserta una serie de elementos a una tabla en la base de datos
string $table Tabla a la cual se le quiere remover un elemento
array $e Arreglo asociativo de elementos a insertar, con la estrctura
  • 'nombre_del_campo_en_la_db' => $valor
  • NOTA: el contenido de $valor no necesita ser sanado, el método lo sana automáticamente.
public update() : PDOStatement Actualiza elementos de una tabla en la base de datos según una condición
string $table Tabla a la cual se le quiere remover un elemento
array $e Arreglo asociativo de elementos a modificar, con la estrctura
  • 'nombre_del_campo_en_la_db' => $valor
  • NOTA: el contenido de $valor no necesita ser sanado, el método lo sana automáticamente.
string $where Condición de modificación que define quien/quienes son dichos elementos
string $limit = '' Límite de elementos modificados, por defecto los modifica a todos
public select() : false|array Selecciona y lista en un arreglo asociativo/numérico los resultados de una búsqueda en la base de datos, si no hay resultados retorna false
string $e Elementos a seleccionar separados por coma
string $tbale Tabla de la cuál se quiere extraer los elementos $e
string $where = '1 = 1' Condición que indica quienes son los que se extraen, si no se coloca extrae todos
string $limite = '' Límite de elementos a traer, por defecto trae todos los que cumplan con la condición escrita en $where
public query_select() : false|array Realiza una query, ideal para trabajar con SELECTS ya que retorna false/ si no hay resultados, o un arreglo si los hay.
string $sql Query en SQL
public query() : PDOStatement Realiza una query, método nativo de PDO
string $sql Query en SQL

NOTA: Todos los métodos y atributos de la clase PDO de PHP, como querys preparadas, etc, siguen estando disponibles y se pueden seguir trabajando de la misma manera.

Listado de motores soportados

Se presenta una lista con todos los motores soportados por el driver Database

Motor String del parámetro
MySQL 5.1+ mysql (default)
Oracle oracle
PostgreSQL postgresql
MS SQL mssql
SQLite sqlite
CUBRID cubrid
Interbase/Firebid firebird
ODBC odbc