La clase DataBase nos permite operar directamente con la base de datos de FacturaScripts. Conecta automáticamente al iniciar FacturaScripts y mantiene una única instancia durante toda la ejecución.
No es posible conectar a otra base de datos que no sea la de FacturaScripts.
FacturaScripts ya conecta automáticamente al iniciar y desconecta cuando ha terminado la ejecución. No es necesario ni aconsejable llamar manualmente a los métodos connect() o close().
Los modelos pueden acceder a la base de datos directamente llamando a self::$dataBase. Los controladores llamando a $this->dataBase.
Para el resto de clases es necesario usar el namespace:
use FacturaScripts\Core\Base\DataBase;
$dataBase = new DataBase();
Puede ejecutar una consulta select y obtener los resultados llamando al método select().
$dataBase = new DataBase();
$data = $dataBase->select('SELECT DISTINCT ciudad FROM clientes;');
var_dump($data);
Este método devuelve un array con los resultados. Si no hay resultados en array estará vacío.
Para hacer un select con paginación podemos usar el método selectLimit().
$dataBase = new DataBase();
$limit = 100;
$offset = 100;
$data = $dataBase->selectLimit('SELECT * FROM clientes', $limit, $offset);
var_dump($data);
En esta consulta obtenemos el listado de clientes, limitado a 100 elementos, pero emepezando a partir del elemento nº100, es decir, es como obtener la segunda página de resultados de la consulta. Con el $limit indicamos cuantos elementos devolver, y con el $offset indicamos a partir de qué posición hacerlo.
Para ejecutar consultas de tipo insert, update o delete utilice el método exec().
$dataBase = new DataBase();
$dataBase->exec("UPDATE clientes SET ciudad = 'Alicante';");
Este método devuelve TRUE si la consulta se ejecuta correctamente o FALSE en caso contrario.
Las transacciones permiten deshacer cambios en la base de datos. Una transacción consta de 3 pasos:
/// iniciamos la transacción
$dataBase = new DataBase();
$dataBase->beginTransaction();
/// hacemos cambios
$dataBase->exec("UPDATE clientes SET ciudad = 'Alicante';");
/// decidimos qué hacer
if( ... ) {
$dataBase->rollback(); /// deshacer
} else {
$dataBase->commit(); /// confirmar
}
Las transacciones también afectan a los cambios realizados por modelos, es decir, que podemos usarlas incluso cuando operamos con modelos:
/// iniciamos la transacción
$dataBase = new DataBase();
$dataBase->beginTransaction();
/// creamos 100 productos
$total = 0;
for($num = 1; $num <= 100; $num++) {
$newProduct = new Producto();
$newProduct->descripcion = 'Producto ' . $num;
$newProduct->referencia = 'producto' . $num;
if(false === $newProduct->save()) {
break;
}
$total++;
}
/// si hemos creado menos de 100 productos, deshacemos los cambios (los productos desaparecen)
if($total < 100) {
$dataBase->rollback(); /// deshacer
} else {
$dataBase->commit(); /// confirmar
}
FacturaScripts no permite hacer transacciones dentro de otras transacciones. Lo que si que podemos hacer es comprobar previamente si ya estamos dentro de una transacción o la iniciamos nosotros:
/// comprobamos o iniciamos la transacción
$dataBase = new DataBase();
$newTransation = false === $dataBase->inTransaction() && $dataBase->beginTransaction();
/// hacemos cambios
...
/// decidimos qué hacer
if(false === $newTransation) {
/// la transacción no la hemos iniciado nosotros, así que no hacemos nada
} if( ... ) {
$dataBase->rollback(); /// deshacer
} else {
$dataBase->commit(); /// confirmar
}
Necesita identificarse para continuar con esta acción. Haga clic en iniciar sesión o cree una cuenta.
Iniciar sesiónFecha de creación | 11-05-2018 00:00:00 |
Última actualización | 04-02-2021 |
Contador de visitas | 3117 |