Firebird es un sistema de administración de base de datos relacional (RDBM)
liberado por Borland. Firebird junto con
PostgreSQL y MySQL es
uno de los motores de base de datos más conocidos de código abierto.
En el presente tutorial veremos como utilizar Firebird con Kumbia Enteprise Framework. Los ejemplos
a continuación también pueden ser usados con bases de datos Interbase.
Requerimientos
Kumbia Enterprise utiliza las extensiones "interbase" y "pdo_firebird" de PHP para conectarse a Firebird/Interbase
usando la capa nativa, por lo que es necesario que alguna de estas 2 extensiones estén disponibles.
Es posible realizar conexiones a bases de datos Firebird/Interbase usando protocolo TCP/IP ó IPX. Las bases
de datos pueden estar alojadas en el mismo servidor ó en recursos remotos. Para configurar la base de datos
en el environment.ini se usa la siguiente configuración:
En el adaptador de Firebird se ha implementado toda la API del componente Db, por lo que se puede
usar naturalmente toda su funcionalidad:
//Hacer una consulta
$db->query("SELECT * FROM clientes");
$numeroRegistros = $db->numRows();
//Si hay registros mostrarlos
if($numeroRegistros>0){
while($cliente = $db->fetchArray()){
echo $cliente[0], "\n";
echo $cliente["nombre"], "\n";
}
}
//Mostrar el segundo cliente
$db->dataSeek(1);
$row = $db->fetchArray();
echo $row["nombre"], "\n";
//La tabla "clientes" existe?
$db->tableExists("clientes");
//Listar todas las tablas de la base de datos
$tablas = $db->listTables();
foreach($tablas as $tabla){
echo $tabla, "\n";
}
//Consultar los meta-datos de una tabla
$fields = $db->describeTable("clientes");
foreach($fields as $field){
print_r($field);
}
Implementación de LIMIT
Así como con los demás adaptadores de Db, en Firebird se ha implementado la extensión del lenguaje SQL llamada
LIMIT que permite delimitar el número de registros devueltos por la base de datos:
//Hacer una consulta
$sql = $db->limit("SELECT * FROM clientes", 10);
$cursor = $db->query($sql);
$numeroRegistros = $db->numRows($cursor); // 10
Usar Firebird con ActiveRecord
Toda la funcionalidad de ActiveRecord puede ser aprovechada cuando se usan bases de datos Firebird/Interbase.
Los niveles de isolación y soporte a transacciones también fueron implementados según este motor. Los generadores
(secuencias) también son soportados por ActiveRecord:
Firebird/Interbase no soportan columnas identidad (autonuméricas), en cambio es posible usar generadores. Un generador
puede ser creado usando la habitual convención para secuencias NOMBRETABLA_CAMPO_SEQ. Si el campo llave
primaria además se llama ID entonces el modelo lo podemos definir así:
class Clientes extends ActiveRecord {
}
Si el campo llave primaria no se llama ID entonces podemos definir el generador así:
class Clientes extends ActiveRecord {
public function initialize(){
$this->setIdGenerator("Native", "codigo");
}
}
Si el generador tiene un nombre diferente a la convención se puede usar un generador nativo para indicar su nombre:
class Clientes extends ActiveRecord {
public function sequenceName(){
return "CLIENTES_CODIGO_GEN";
}
public function initialize(){
$this->setIdGenerator("Native", "codigo");
}
}
Luego se usa el modelo como es habitual:
//Crear un cliente
$cliente = new Clientes();
$cliente->nombre = "David Gomez";
$cliente->fecha = new DbRawValue("CURRENT_TIMESTAMP"); #Colocar la fecha de la base de datos
$cliente->save();
//Mostrar el ID que se asignó al registro desde el generador (secuencia)
echo $cliente->id;
//Mostrar el nombre de todos los clientes
foreach(Clientes::findAll() as $cliente){
echo $cliente->nombre, "\n";
}
Conclusiones
Firebird es un potente motor de código abierto que puede ser aprovechado en Kumbia Enterprise
La completa funcionalidad de los componentes Db y ActiveRecord puede ser aprovechada con bases
de datos Firebird/Interbase
Si tiene problemas para usar el adaptador de Firebird/Interbase puede obtener soporte de los desarrolladores
del framework en nuestro grupo de discusión en google groups.
Tell friends about this article on social networks: