Ir al contenido principal

Uso de doctrine sobre bases de datos en Symfony


A la hora de trabajar con Symfony, este frameword de PHP nos proporciona la herramienta conocida como doctrine, que nos permite realizar de una forma muy sencilla y automatizada la creación y definición de las entidades de nuestra base de datos.

Para trabajar con doctrine -sobre Windows-, lo primero que debemos hacer es añadir en nuestro PATH la dirección de la aplicación.

Supondremos que trabajamos con la siguiente tabla


CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `author` varchar(255) NOT NULL,
  `content` longtext NOT NULL,
  `tags` varchar(255) NOT NULL,
  `created` date NOT NULL,
  `updated` date NOT NULL,
  `slug` varchar(255) NOT NULL,
  `category` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

Para crear esta nueva tabla, utilizaremos la siguiente sentencia de doctrine

C:\wamp\www\Symfony>php app\console doctrine:generate:entity

Que nos guiará a través del proceso para la creación de tablas.

1. Lo primero que debemos indicar es el nombre que usaremos para nuestra entidad, que debe seguir el siguiente formato: IdentificadorDelBundle:NombreEntidad

2. Lo siguiente será el tipo de formato, que aceptaremos el que nos propone por defecto [annotation] simplemente apretando Enter.

3. Es el turno de comenzar a introducir los campos de la tabla. Debemos notar que el identificador no es necesario ya que lo incluye por defecto, por lo que comenzaremos con el primer campo, indicando el nombre, el tipo de dato, y el tamaño del mismo. Si queremos conocer todos las opciones en cuanto al tipo de datos, podemos verlos en la siguiente página del manual del fabricante.

4. Cuando acabemos de introducir todos los campos pulsamos Enter y nos pregunta que si queremos crear un repositorio vacío. Por defecto la opción es que no, pero le diremos que sí.

5. Confirmamos la creación de la entidad.

Ya tenemos creadas las entidades en nuestro proyecto, pero nos falta pasarlas a la base de datos. Para ello, si aún no hemos creado al base de datos, los hacemos


php app/console doctrine:database:create

Y generamos las tablas de acuerdo con la información especificada en las entidades


php app/console doctrine:schema:create

Si notamos cualquier error o se nos ha olvidado añadir algún campo o queremos hacer alguna modificación, lo haremos en el directorio Entities y desde la consola ejecutaremos el comando


php app/console  doctrine:generate:entities nombre_del_Bundle

Para actualizar las entidades

php app/console doctrine:schema:update --dump-sql

Si queremos ver qué instrucciones se ejecutarán en la base de datos

php app/console doctrine:schema:update --force

Para actualizar todos los cambios, en la base de datos, que hayamos realizado.

Si sólo quisiéramos listar las instrucciones que se van a realizar, ejecutamos la instrución

php app/console doctrine:schema:update

Con esto doctrine creará automáticamente la tabla en la base de datos y los archivos relacionados con la actividad.


Comentarios

Entradas populares de este blog

Exportar archivo de configuración de WinSCP

S i estamos trabajando con WinSCP seguro que ya hemos guardado distintas sesiones para acceder a ellas directamente en futuras ocasiones y evitar volver a introducir todos los parámetro de configuración. Seguro que también muchos de vosotros habéis agrupado las sesiones en carpetas dependiendo de la naturaleza de las mismas. Este trabajo ocupa un valioso tiempo que no nos podemos permitir repetirlo para todos los equipos que tenemos, por lo que lo más lógico es configurar todas las sesiones y exportar su configuración al resto de equipos , teniendo una sola versión y evitarnos tener que volver a configurar todas las sesiones en cada uno. El problema es que WinSCP no nos muestra la opción de exportar de una forma sencilla, por lo que tendremos que buscarnos la vida. Lo primero que debemos hacer es abrir el programa y acceder a Preferencias -> Almacenamiento (o su equivalente al inglés) En esta pantalla deberemos indicar que almacene la configuración en un archivo

Asignar valores por defecto a input=”file” y a textarea

S eguro que muchos os habéis estado rompiendo la cabeza buscando la forma de dar un valor por defecto a el tipo de dato input=”file” . Pues que sepáis que no se puede!!! No se puede dar un valor por defecto a los campos de este tipo, ya que hacen referencia a una ruta física local y podrían surgir problemas de seguridad. Lo que se puede hacer, por ejemplo, es mostrar la imagen o el nombre del dato que tenemos almacenado y si el usuario desea modificarla, ofrecerle la opción de cargar una nueva. La etiqueta textarea , aunque pueda parecérnoslo, no se trata de un input y para darle valor por defecto simplemente debemos mostrar el texto que deseemos entre su marca de apertura y de cierre. Es decir, en caso de que lo que deseemos mostrar por defecto sea una variable, introduciremos el siguiente código: <textarea id="txtobservaciones" name="txtobservaciones" rows="2" cols="40" class="txt" ><?=$_POST["txtobservaciones"] ?&

Configuración de archivo de Logs para IpTables

I pTables se usa para configurar, mantener e inspeccionar las tablas de reglas de filtrado de IPs en el kernel de Linux, pero por defecto, su sistema de logs no es todo lo completo esperamos. Por defecto, la mayoría de los logs del sistema se guardan en el fichero /var/log/messages pero en este caso vamos a configurar un nuevo fichero para que almacene únicamente los logs que generaremos con algunas reglas en IpTables , creando así su propio archivo de bitácora . Lo primero que debemos hacer es configurar el archivo /etc/syslog.conf , que se trata de un archivo de configuración en el que se indica el modo en que los mensajes del sistema son bitacorizados a través de la utilidad syslogd que se instala y configura por defecto en todos los sistemas GNU/Linux . Debemos añadir al final del fichero la siguiente sentencia: kern.warning /var/log/iptables.log Con esto indicamos que se almacenen los mensajes provienen del kernel con prioridad 4 o superior ('warning' es el nivel de