ES Tutorial

From RedBean

Jump to: navigation, search

Contents

Aprendiendo RedBean

Para empezar con RedBeanPHP primero Descarga el archivo all-in-one pack desde este sitio, e incluye el archivo php en tu código fuente, de esta forma:

require("rb.php");

Para configurar RedBean usa uno de los siguientes comandos:


SQLite en Linux, Mac, BSD

R::setup();  

SQLite independiente de plataforma

R::setup("sqlite:database.txt"); 

MySQL

R::setup("mysql:host=localhost;dbname=oodb",$user,$pass);

PostgreSQL

R::setup("pgsql:host=localhost dbname=oodb",$user,$pass);

Por defecto RedBeanPHP usa SQLite como motor de base de datos. Si quieres usar MySQL u otra base de datos o si usas Windows, usa un PDO DSN apropiado.

Crea un Bean

RedBean trabaja con Beans. La idea es bastante sencilla. Creas un bean usando la funcion dispense(). Un Bean no es nada mas que un objeto vacío con propiedades publicas. Llenas las propiedades con valores y lo pasas a RedBean para guardarlo en la base de datos. RedBean se ocupa del resto. Crea tablas, columnas, y determina el tipo de archivo. Un bean siempre tiene un tipo. El tipo del bean determina el nombre de la table.

$libro = R::dispense("libro");
$libro->titulo = "MiLibro";
$id = R::store($libro);

Esto guardara un bean de tipo "libro". En la base de datos notaras una nueva tabla llamada Libro, con una entrada, con una columna "titulo" con valor "MiLibro". (También puedes customizar el esquema: Prefixes,Custom_Keys ).

Cargando un Bean

Para cargar un bean de la base de datos, utiliza:

$libro = R::load( "libro", $id );

Esto devolvera el libro guardado anteriormente. Podemos ahora ajustar sus propiedades:

$libro->nombre = "Otro titulo, cambie de opinión.";

E incluso podemos agregar mas propiedades dinamicamente:

$libro->puntaje = 4;
$libro->disponible = true;
R::store($libro);

RedBeanPHP agregara las nuevas propiedades a la tabla por ti automáticamente. RedBeanPHP también determina los tipos necesarios para tus propiedades.

TIP! En ves de definir cada propiedad individualmente puedes llenar un bean automáticamente usando la array de $_POST:

$bean->import($_GET);
$bean->import($_POST, "name,year"); //solo estos campos

Si terminaste de desarrollar y no hay necesidad para RedBean de crear y modificar la estructura de las tablas puedes mejorar el rendimiento drasticamente "conjelando" RedBean:

R::freeze(); //no mas cambios en la estructura!

Borrando un Bean

Para remover un bean de la base de datos utiliza:

R::trash( $libro );

Esto removerá el libro almacenado anteriormente.

Aprende mas sobre Beans.

Asociación

Los Beans pueden estar asociados entre ellos. Asociar beans con RedBean es fácil. Por lo tanto, si tenemos un sistema para gestión de empleados podemos asociar a los empleados a un cuarto especifico de esta forma:

$employee1 = R::dispense("employee");
$employee2 = R::dispense("employee");
$room = R::dispense("room");
$room->name = "R1";
$employee1->name = "Bill";
$employee2->name = "Steve";
R::associate( $room, $employee1 );
R::associate( $room, $employee2 );

Para averiguar cual esta en la sala de reuniones...

$employees = R::related( $room, "employee" );

Para sacar a Steve del cuarto:

R::unassociate( $room, $employee2 );

Para poner a Steve en otro cuarto:

 R::associate( $room2, $employee2 );

Para sacar a todos del cuarto:

R::clearRelations( $room, "employee" );

Lee mas sobre Associations.

Encontrando Beans

Finding Beans(Encontrar Beans) con RedBean es simple. Para buscar un bean con RedBeanPHP utiliza el Finder. El Finder acepta el viejo SQL plano y convierte el resultado a beans. Por lo tanto si queremos obtener todos los empleados mayores de 60 años:

$seniors = R::find("employee", " age > 60 "); 
foreach($seniors as $senior) {
  echo $senior->name;
}

Y acá hay otro ejemplo:

$beans = R::find("book",
"title=? and author=? ",
array("Christine","Stephen King"));

Para encontrar un solo bean utiliza:

R::findOne("book", .. );


'Nota 'También puede usar sentencias ORDER BY y LIMIT en tu SQL.


Aprende mas sobre Finding Beans y Gold SQL...

Trees

RedBeanPHP también soporta arboles. Aquí hay un ejemplo de un árbol en RedBeanPHP:

R::attach($father,$daughter);
R::attach($father,$son);
$children = R::children( $father );
$father = R::getParent( $son );

Copiar

Para copiar un bean y sus asociaciones usa el método 'copy':

$copy = R::copy( $bean, "nuts,sauces");

El segundo argumento contiene una lista separada por comas de los beans asociados que necesitan ser copiados.


Intercambio

En muchos casos necesitas intercambiar solo un valor. Por lo tanto si tienes una lista ordenada por lo general tienes también un icono con una flecha que mueve el ítem hacia arriba que mueve al ítem arriba, subiendo su importancia, prioridad o numero de orden. En este caso querés intercambiar las prioridades del ítem seleccionado y el ítem anterior al seleccionado. Para lograr esto con RedBeanPHP podes usar el método swap():

$tasks = R::batch("task",array(1,2));
R::swap($tasks,"priority"); //intercambia prioridades de task 1 y 2.


Querying

Aveces quieres usar tu base de datos como una base de datos simplemente. Las bases de datos relacionales tienen características poderosas para generar resúmenes, reportes y estadísticas. No hay necesidad de contar cientos de beans si puedes tan solo correr una query. Para usar el poder de SQL de RedBean solo utiliza estos métodos:

R::getAll("SELECT * FROM book ");
R::getRow("SELECT * FROM book WHERE id = 2 ");
R::getCol("SELECT title FROM book ");
R::getCell("SELECT 123 ");

Aprende mas sobre Querying...


Depurando tu codigo

Necesitas ver todo el SQL que genera RedBeanPHP? Puedes fácilmente activar el sistema de depurado interno de RedBeanPHP. Analiza tu SQL con el siguiente comando:

R::debug( true );

Luego de activar el depurador, todas las sentencias SQL que sean procesadas por el driver serán mostradas por pantalla.


Instalando RedBeanPHP con GIT

La versión completa de RedBean PHP puede ser instalada usando GIT. RedBean usa GIT para su desarrollo y versionado. Para ver la ultima edición de RedBean full edition:

git clone http://github.com/gabordemooij/redbean.git

Una lista de todos los comandos

Aquí hay una lista conteniendo todos los comandos simples List of R-Commands.

Lee más: next...

Personal tools