Introducción a desarrollo web con PHP y Yii
¿Qué es Yii2?
¿Por qué usar PHP y Yii2?
Arquitectura modelo–vista–controlador
Instalación de Yii2
Estructura de una aplicación con Yii2
Configuración de variables de entorno
Quiz: Introducción a desarrollo web con PHP y Yii
Esquema de la aplicación
Proyecto: The Book Club
Creación del schema de la base de datos
Creación de tablas clubs y club_members
Quiz: Esquema de la aplicación
Modelos, vistas y controladores
Commands
Model
ActiveRecord
ActiveRecord de la clase author
Relational data: hasOne()
Relational data: hasMany()
Web Controllers
Controller de la clase author
Enrutamiento y creación de URLS con urlManager
Views
Configuración de vistas con Smarty
Quiz: Modelos, vistas y controladores
Manejo de usuarios con Yii2
Clase user
Autenticación de usuarios
Autenticación de usuarios: LoginForm
User input
Formulario de login con ActiveForm
Validación de modelo con core validators
Core validators: unique, filter, email
Quiz: Manejo de usuarios con Yii2
Enlaces, navegación y tablas intermedias
Dar de alta un libro
Asignación de libros a usuario
Asignación de libros a usuario: vista
Calificar un libro
Promedio de calificaciones de libro
Relaciones entre tablas intermedias con viaTable()
Enlaces y navegación
Quiz: Enlaces, navegación y tablas intermedias
Despliegue y cierre del proyecto
Despliegue de aplicación de Yii2 a Heroku
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En el mundo del desarrollo web, establecer relaciones entre distintos modelos es fundamental para crear aplicaciones robustas y eficientes. Un reto común es vincular autores con sus respectivos libros. Utilizando frameworks como Yii, este proceso puede simplificarse considerablemente al emplear métodos de relaciones. Pero, ¿cómo se hace? Analicemos cómo podemos, no solo representar estas relaciones, sino también visualizar esos vÃnculos claramente.
Cuando trabajamos con modelos en Yii, tenemos varias opciones para establecer relaciones. Uno de los más utilizados para vincular un autor con sus libros es el método hasMany()
. Este método resulta esencial cuando un autor puede tener múltiples libros:
public function getBooks()
{
return $this->hasMany(Book::class, ['authorId' => 'authorId']);
}
hasMany()
: Este método indica la relación de uno a muchos, donde un autor puede haber escrito múltiples libros. Se especifica que el authorId
del modelo Book
se relaciona con el authorId
del modelo de Author
.Una vez establecida la relación, podemos visualizarlos de manera sencilla. Queremos que al imprimir un autor, se muestre no solo su nombre, sino también la cantidad de libros que ha escrito. Esto se logra extendiendo el método toString
en la clase de Author
:
public function __toString()
{
return sprintf('%s (%d)', $this->name, count($this->books));
}
Este enfoque hace uso del método count()
sobre el arreglo de libros del autor, mostrando claramente cuántos libros posee.
Uno de los aspectos más fascinantes de Yii es su capacidad de manejar propiedades que no están presentes fÃsicamente en la base de datos. Esto se logra mediante el uso de los getters, permitiendo obtener y generar propiedades en tiempo real. Por ejemplo, si quisiéramos representar una bandera basada en la nacionalidad, podrÃamos utilizar un método como el siguiente:
public function getFlag()
{
return 'flags/' . $this->nationality . '.png';
}
Llamar this->flag
es equivalente a invocar this->getFlag()
, haciendo que la propiedad parezca parte natural del objeto.
Para imprimir en la terminal los tÃtulos de cada libro de un autor especÃfico, la lógica de Yii nos permite recorrer fácilmente la relación:
foreach ($author->books as $book) {
printf(" - %s\n", $book->title);
}
Este ciclo itera sobre cada libro asociado al autor y muestra su tÃtulo en pantalla, ejemplificando una práctica común de visualización de datos.
Con estas herramientas, podemos no solo listar los libros de un autor, sino también realizar búsquedas avanzadas, como aquellos con ciertas caracterÃsticas o que no estén prestados. La capacidad de construir estas relaciones en nuestros modelos es esencial para capturar, procesar y presentar datos de manera efectiva.
Las relaciones entre modelos son clave para desarrollar aplicaciones que escalen y se adapten a nuestros requerimientos. A medida que te adentras más en este mundo, recuerda que cada relación que creas es una pieza crucial para armar un sistema de datos coherente y enriquecedor para tus usuarios. ¡Sigue explorando y ampliando tus conocimientos en esta emocionante área del desarrollo web!
Aportes 2
Preguntas 1
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?