- 1

Desarrollo web con G2: Framework PHP práctico y seguro
03:13 - 2

Desarrollo web con PHP y Yii: Instalación y uso eficiente
06:39 - 3

Arquitectura MVC: Modelo, Vista y Controlador
06:57 - 4

Instalación y Configuración de Yii en Entorno Local
05:13 - 5

Estructura de Archivos en Proyectos Yii2 Básicos
10:39 - 6

Configuración Básica de Proyectos en Yii con Variables de Entorno
17:18 Quiz: Introducción a desarrollo web con PHP y Yii
Relaciones de Tablas en Bases de Datos: Cálculo de Promedios
Clase 33 de 35 • Curso de Desarrollo Web con PHP y Yii2
Contenido del curso
- 10

Comandos en Yii: Creación y Ejecución de Controladores en Terminal
12:01 - 11

Modelos en PHP: Creación y Manipulación de Datos
11:38 - 12

ActiveRecord: Integración de Bases de Datos en Frameworks PHP y Ruby
11:15 - 13

Gestión de Autores y Libros en Yii: Creación y Consulta Eficiente
15:22 - 14

Relaciones ActiveRecord en Yii: Conectar Libros y Autores
07:59 - 15

Relaciones de uno a muchos en Yii: Obtener libros de un autor
10:23 - 16

Creación y Uso de Controladores Web en Yii Framework
11:56 - 17

Redirección y manejo de errores en controladores Yii
16:02 - 18

URLs Amigables: Gestión y Creación con URL Manager en PHP
10:14 - 19

Vistas en PHP con Yii y Smarty para Web Apps Sin Frameworks Frontend
10:39 - 20

Plantillas Smarty con Yii: Instalación y Uso Básico
14:30 Quiz: Modelos, vistas y controladores
- 21

Creación y Gestión de Usuarios en Aplicaciones Web Seguras
14:08 - 22

Ofuscación y Validación de Contraseñas en Yii Framework
11:21 - 23

Implementación de Login y Gestión de Usuarios en Yii2
11:33 - 24

Controlador en Yii: Creación y Manejo de Usuarios
11:09 - 25

Creación de Formularios con ActiveForm y Smarty en PHP
10:39 - 26

Validación de Datos en Modelos y Formularios con Yii2
15:01 - 27

Validaciones y Filtros en PHP para Gestión de Usuarios
08:52 Quiz: Manejo de usuarios con Yii2
- 28

Creación y Gestión de Libros en Aplicaciones Web
12:50 - 29

Crear y Gestionar Repisas de Libros en PHP
08:13 - 30

Condicionales y funciones para gestionar libros en la aplicación
05:49 - 31

Calificación de Libros con Validación en PHP y Yii Framework
15:29 - 32

Generación de Información a Partir de Datos en Bases de Datos
15:05 - 33

Relaciones de Tablas en Bases de Datos: Cálculo de Promedios
13:22 - 34

Modificaciones de Menú y Layout en Aplicación Web con G
15:00 Quiz: Enlaces, navegación y tablas intermedias
¿Cómo se relacionan las tablas en una base de datos mediante otra tabla intermediaria?
Comencemos con un aspecto crítico en la administración de bases de datos: relacionar tablas a través de una tabla intermediaria. A menudo, en lugar de una relación directa, se requiere utilizar otra tabla que actúe como puente. Un ejemplo común es calcular el promedio de las calificaciones de las obras de un autor. Aquí, 'autor' se relaciona con 'libro', y luego 'libro' se conecta con 'votos'. Esta estrategia permite agregar complejidad y flexibilidad a la estructura.
¿Cómo implementamos la funcionalidad de cálculo en el modelo?
Al implementar la funcionalidad en el modelo de un autor para obtener el puntaje promedio de sus obras, utilizamos aspectos como:
- Crear funciones públicas como
getScorepara calcular y devolver la media. - Inicializar variables de suma e índice para calcular el promedio.
- Utilizar un conteo para validar casos donde no haya votos registrados.
public function getScore()
{
$i = 0;
$sum = 0;
foreach ($this->votes as $vote) {
$i++;
$sum += $vote->score;
}
return $i === 0 ? 'Sin votos' : sprintf("%.2f con %d votos", $sum / $i, $i);
}
¿Cómo conectar relaciones indirectas utilizando código?
En este ejemplo, un autor se conecta con votos a través de sus libros. Implementamos esta relación usando la función viaTable. Esto permite definir la conexión lógica y obtener el conjunto de votos asociados.
public function getVotes()
{
return $this->hasMany(BookScore::class)->viaTable('books', ['author_id' => 'author_id']);
}
Esta implementación relaciona las tablas efectivamente, optimizando consultas y manejo de datos, al aprovechar las características intrínsecas de los ORMs modernos.
¿Cómo se puede mejorar la funcionalidad de votaciones?
Para un manejo más avanzado, podemos implementar sobrecargas de funciones. Esto permite que una función, como getVotes, pueda tomar parámetros opcionales, aumentando su flexibilidad.
¿Qué hace que las funciones de sobrecarga sean poderosas?
Al añadir un argumento, como bookId, a una función existente, podemos especificar consultas y afinar la información devuelta.
public function getVotes($bookId = null)
{
$query = $this->hasMany(BookScore::class)
->viaTable('books', ['author_id' => 'author_id']);
if (!empty($bookId)) {
$query->andWhere(['book_id' => $bookId]);
}
return $query->all();
}
¿Cómo aplicamos esto en ejemplos prácticos?
Con el uso adecuado de argumentos, logramos extraer datos específicos como promedio de votos de un único libro bajo un autor, comparado con todos los libros del autor.
$getScoreForBook = function ($bookId) {
$votes = $this->getVotes($bookId);
if(empty($votes)) return "Sin votos";
$sum = array_sum(array_column($votes, 'score'));
return sprintf("%.2f con %d votos", $sum / count($votes), count($votes));
};
Esta flexibilidad empodera a los desarrolladores para manejar datos complejos con menos código y más eficiencia.
¡La programación se parece a resolver un rompecabezas! La sistematización de datos a través de relaciones es uno de los motores propulsores hacia una base de datos robusta y altamente funcional.