miércoles, 11 de septiembre de 2013

Yii Framework, conectar a la Base de Datos y generar modelos (Parte 3)

Holas de nuevo >_<, ahora que ya conocemos los conceptos básicos de Yii, podemos pasar al momento de generar los modelos para comenzar a trabajar en el "desarrollo" de la aplicación.
Crearemos pues, una base de datos que llamaremos pruebayii en Mysql con la siguiente estructura:

CREATE TABLE persona (
   id SERIAL NOT NULL ,

   nombre VARCHAR (40) NOT NULL ,
   app VARCHAR (50) NOT NULL ,
   apm VARCHAR (50) ,
   profesion VARCHAR (20),
   fecha_nacimiento DATE NOT NULL ,
   sexo BOOL NOt NULL,
   documento_identidad VARCHAR (15) NOT NULL ,
   CONSTRAINT persona_PK PRIMARY KEY (
      id
   )
) ;

CREATE TABLE telefono (
   id SERIAL NOT NULL ,
   numero VARCHAR (20) NOT NULL ,
   persona_id INTEGER NOT NULL ,
   CONSTRAINT telefono_PK PRIMARY KEY (
      id
   )
);

ALTER TABLE telefono ADD CONSTRAINT telefono_persona_FK FOREIGN KEY (
   persona_id
)
REFERENCES persona (
   id
)
ON DELETE RESTRICT ;


Para permitir a la aplicación conectarse a una base datos en Mysql se debe editar el archivo "main.php" (ubicado en la ruta "c:/ruta/nombreproyecto/protected/config"). Buscamos la linea de conexión a la Base de Datos, por defecto la aplicación esta configurada para conectar con una Base de datos sqlite pero podemos escoger el DBMS en  el archivo de configuración. La estructura para configurar la conexión con una Base de Datos en Mysql es la siguiente:

'db'=>array(
   'connectionString' => 'mysql:host=localhost;dbname=nombrebd',
   'emulatePrepare' => true,
   'username' => 'usuario',
   'password' => 'contraseña',
   'charset' => 'utf8',
)

donde:
  • localhost: es la ubicación de la Base de Datos, puede ser localhost para configurar el equipo local o la dirección ip del equipo que tiene la Base de Datos instalada. OJO: Es necesario configurar la instancia de mysql para aceptar pedidos fuera del equipo local de Base de Datos si se utilizara una dirección ip en este parámetro.
  • nombrebd: el nombre de la Base de Datos a la que nos conectaremos.
  • usuario: el usuario de la Base de Datos Mysql. Usualmente "root" por defecto.
  • contraseña: la contraseña para conectar a la Base de Datos. Usualmente un campo vacío por defecto ("").


El archivo de configuración para nuestro ejemplo se debería ver de la siguiente manera:

/* conexion con sqlite comentada
'db'=>array(
   'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',),
*/         

'db'=>array(
    'connectionString' => 'mysql:host=localhost;dbname=pruebayii',
    'emulatePrepare' => true,
    'username' => 'root',
    'password' => '70599020',
    'charset' => 'utf8',
),

Ahora habilitaremos una herramienta gráfica que nos permitira generar los modelos de la base de datos, se llama Gii (una gran imaginación para llamar a sus herramientas XD). Para habilitar esta "herramienta" se debe editar nuevamente el archivo de configuración, buscamos en el archivo de configuración la palabra "gii" y descomentamos la configuración. El archivo deberia quedar de la siguiente manera:

'gii'=>array(
        'class'=>'system.gii.GiiModule',
        'password'=>'123',
    // If removed, Gii defaults to localhost only. Edit carefully to taste.              'ipFilters'=>array('127.0.0.1','::1'),
)

Ahora ingresamos a la aplicación, con uno de los siguientes URLs (dependendiendo de su configuración):
http://yiiproject.dev/index.php?r=gii
http://localhost/yiiproject/index.php?r=gii
Se muestra la pagina de inicio de Gii que nos pedira el password que configuramos en el paso anterior.

Le damos el password que configuramos en el paso anterior y presionamos el boton "Enter".
Nos aparece la pantalla donde podremos generar Controladores, Crud, Formularios, Modelos y Módulos. Presionamos en el enlace (link) "Model Generator" y nos aparece el formulario para generar modelos. En "Table Name" anotamos "*" y presionamos el boton "Preview", se muestra los archivos que se generaran y presionamos el boton "Generate".

Y listo >_<, ya tenemos los modelos generados, los podemos encontrar en la carpeta "protected/models", así que a darles un vistazo. En la siguiente parte del tutorial veremos como generar formularios y ajustarlos a nuestras necesidades.


Keep Coding!!!

3 comentarios:

  1. buenas tardes
    Me aparece el menú pero cuando presiono Model Generator no me muestra nada, el explorador se queda pensando y no muestra la pantalla que indicas anteriormente.
    saludos

    ResponderEliminar
    Respuestas
    1. Podrias ser muchas cosas, te aconsejo instalar Firebug para ver si existe algun error en la pagina. Firebug es una extension para firefox y para chrome que permite ver la estructura interna de un sitio en el navegador.

      Eliminar
  2. Buenas...
    Necesito realizar la conexion con SYBASE, alguien me podría ayudar al respecto? Muchas gracias...

    ResponderEliminar