No Description

raguilar c265fd9863 Actualizar 'README.md' 1 year ago
Images 10a69d5403 Subir archivos a 'Images' 1 year ago
react c6af29db0f Componentes React. Uploader 1 year ago
yii2 a6e0ae3ca2 Corrección de títulos 2 years ago
README.md c265fd9863 Actualizar 'README.md' 1 year ago

README.md

Guía de Desarrollo en Backend con Yii 2

Tabla de Contenido

Guía de Desarrollo - Creación de Tablas y Consumo de Endpoints en el Backend YII 2

Acerca del Proyecto

Este documento tiene como objetivo proporcionar las pautas y pasos necesarios para llevar a cabo la creación de tablas y servir información mediante el consumo de endpoints o APIs en el backend.

El Archivo Principal

El archivo principal contiene una serie de pasos detallados que deben seguirse para configurar y poner en marcha el proyecto. A continuación, se describen los principales puntos:

Prerrequisitos

Setear tus variables de entorno

1. Crear un Rol (Usuario) para la Base de Datos

Se explicará cómo crear un rol de usuario específico para la base de datos, garantizando la seguridad y los permisos adecuados.

Recuerda tener instalado el motor del posgres para poder operar la consola.

Texto Alternativo

Ingresar el siguiente ejemplo desde la consola de (psql):

create role "DB_USER" with login password 'DB_PASSWORD';

2. Crear una Base de Datos

Los pasos para la creación de la base de datos necesaria serán detallados, asegurando la correcta configuración del entorno de almacenamiento de datos. Ingresar el siguiente ejemplo desde la consola de (psql):

create database "DB_NAME" with owner="DB_USER" template=template0;

nota: recuerda agregar el mismo nombre de usuario, password, nombre de la base de datos en tu archivo db.php antes de aplicar tus migraciones

3. Configurar en el Archivo config/db.php

Se proporcionarán instrucciones sobre cómo configurar adecuadamente el archivo db.php para establecer la conexión entre la aplicación y la base de datos.

Configurar en el archivo config/db.php la información de la base de datos, reemplazar DB_NAME, DB_USER y DB_PWD

Texto Alternativo

4. Clonar el Proyecto de PHP

Instrucciones sobre cómo clonar el proyecto desde el repositorio de PHP para obtener la estructura base del proyecto.

https://git.miralo.xyz/computo21/yii2.git


Después de clonar el proyecto ejecutar en la terminal instalar las dependencias composer

composer install

Si te aparece el siguiente error, proceder a actualizar composer.

Texto Alternativo

composer update

5. Migraciones

Se describirá el proceso de migración, que implica aplicar y gestionar cambios en la base de datos a medida que evoluciona la aplicación.
Comando para ejecutar migraciones.

php yii migrate

Comando para ejecutar solo una migración.

php yii migrate/up 1

Texto Alternativo
Comando para crear un archivo de migración.

php yii migrate/create :name:

Si deseas ver las tablas creadas en tu base de datos, lo puedes hacer dentro de psql con el comando.

\dt

Texto Alternativo

Si deseas checar la conectividad a tu base de datos, puedes hacerlo de la siguiente manera. Setear las variables de entorno de Postgres.
Texto Alternativo
Puedes proceder a gestionar tu base de datos directamente ahora desde CMD.

psql -h localhost -U DB_USER -d your_database_name

Con el siguiente comando sales del modo PSQL.

\q

También se puede utilizar el gestor Datagrip para facilitar de manera manual las transacciones. Texto Alternativo

Configuración del Datagrip. Texto Alternativo nota: como podemos observar, pudimos configurar la conexión desde la interfaz gráfica de usuario (GUI), mediante Datagrip, para facilitar la gestión de la base de datos previamente creada.

6. Creación de Tablas.

Pasos detallados sobre la creación de tablas específicas, asegurando la coherencia y estructuración adecuada de los datos.
Ejemplo para hacer una tabla, llave primaria, llave foránea. Texto Alternativo

php yii migrate/create tbl_ra  

Texto Alternativo

Comando para dar downgrade a la migración.

php yii migrate/down

Codigo para crear dos entidades Producto Categoria
archivo:m240201_185131_tbl_test.php

<?php

use yii\db\Migration;

/**
 * Class m240201_185131_tbl_test
 */
class m240201_185131_tbl_test extends Migration
{
    /**
     * {@inheritdoc}
     */
    public function safeUp()
    {
        $this->createTable('Producto', [
            // "idProducto" => $this->primaryKey(), // Esta es una manera de volver llave primaria
            "idProducto" => $this->string(36),  // UUID es por eso el 36
            "idCategoria" => $this->string(36),
            "clave" => $this->string(20),
            "nombre" => $this->string("255"),
            "descripcion" => $this->string("255"),            
            "idUsuarioCreador" => $this->integer(),
            "creado" => $this->timestamp() . " with time zone",
            "modificado" => $this->timestamp() . " with time zone",
            "eliminado" => $this->timestamp() . " with time zone",
          ]);      
          
          $this->addPrimaryKey('ProductoPK', 'Producto', 'idProducto');

          $this->createTable('Categoria', [
            "idCategoria" => $this->string(36),
            "clave" => $this->string(20),
            "nombre" => $this->string("255"),
            "descripcion" => $this->string("255"),
            "idUsuarioCreador" => $this->integer(),
            "creado" => $this->timestamp() . " with time zone",
            "modificado" => $this->timestamp() . " with time zone",
            "eliminado" => $this->timestamp() . " with time zone",
          ]);      
          
          $this->addPrimaryKey('CategoriaPK', 'Categoria', 'idCategoria');
          
          $this->addForeignKey('ProductoIdCategoriaFK', 'Producto', 'idCategoria', 'Categoria', 'idCategoria');          
    }

    /**
     * {@inheritdoc}
     */
    public function safeDown()
    {
        echo "m240201_185131_tbl_test cannot be reverted.\n";
        $this->dropForeignKey('ProductoIdCategoriaFK', 'Producto');          
        $this->dropTable("Producto");
        $this->dropTable("Categoria");
        
    }

    /*
    // Use up()/down() to run migration code without a transaction.
    public function up()
    {

    }

    public function down()
    {
        echo "m240201_185131_tbl_test cannot be reverted.\n";

        return false;
    }
    */
}

Al ejecutar la migración si todo esta bien debe aparecer tus tablas en la base de datos, en este caso producto-categoria.

Texto Alternativo

nota: Podemos visualizar la relación entre entidades mediante Datagrip. Texto Alternativo

7. Inicialización del servidor PHP.

Instrucciones para inicializar el servidor PHP y poner en marcha la aplicación localmente.

Texto Alternativo

Comando para iniciar un servidor HTTP en el proyecto.

php yii serve

La primera pantalla al iniciar el servidor es:

Texto Alternativo

**nota: **recuerda agregar la extensión gii para crear tus modelos http://localhost:8080/gii

Texto Alternativo

8. Generador de Modelos a través del Yii 2

Cómo utilizar el generador de modelos proporcionado por Yii 2 para facilitar la creación de modelos de datos.
Entrar en la url del servidor HTTP e ir a la url http://localhost:8080/gii para entrar en el generador de código, después elegir "Model Generator" Texto Alternativo
Rellenar los campos "Table Name" y "Model Class Name" Texto Alternativo
Dale clic en "Preview" y después "Generate" para generar el modelo de la tabla.

Ejemplo generación de modelos Producto y Categoria

Texto Alternativo

9. Modelos a través del Yii 2

Archivo generado en la carpeta "models"; normalizar la nomeclatura de los modificadores de acceso, ya que en veces el modelo en atributeLabels se genera con plurales o “s”, etc.

Texto Alternativo Ejemplo Texto Alternativo Corregir etiquetas de "attributeLabels", nombre de las relaciones ("getIdUsuario0" => "getUsuario") y php doc (documentación sobre la clase) Texto Alternativo Generar en el directorio models del módulo donde estemos trabajando (por lo general en modules/v1/models).
agregar una clase que herede del archivo que acabamos de generar
agregaremos los métodos fields (campos visibles por el producto como categoria) y extraFields sería categoria.

Texto Alternativo

ejemplo Texto Alternativo el modelo que está en la raíz debe heredar de ModeloBase **Solo para cuando se tenga implementada en codigo la clase, en su mayoria para cuando se generan los id's del tipo UUID string(32) Texto Alternativo

10. Configuración de Controladores.

Instrucciones sobre cómo configurar controladores para gestionar de manera eficiente las solicitudes y respuestas en la aplicación.
Para crear el controlador, copiar el archivo de un catálogo y renombrar el archivo, la clase y la variable $modelClass, corregir los textos de los mensajes de respuesta. Texto Alternativo

Ejemplo Utilizar una plantilla previa del controlador y remplazar el catalogo con el cual se necesita interactuar. Texto Alternativo

TODO

Lista de tareas pendientes o mejoras planificadas para el proyecto.

Tecnologías

  1. Composer: Herramienta de gestión de dependencias para PHP.
  2. PHP: PHP puede ser instalado mediante XAMPP. Se recomienda la versión PHP 7.2.31 a < 8.0.
  3. DataGrip: Entorno de desarrollo para bases de datos.
  4. Git: Sistema de control de versiones distribuido.
  5. PostgreSQL: Motor de base de datos relacional.