Laravel y Base de Datos

Entorno de trabajo y repaso de Laravel

1

Qu茅 aprender谩s sobre Laravel Avanzado

2

Repaso de Laravel y requisitos del curso

3

Configuraci贸n de la base de datos-SQLite en Laravel

4

Instalaci贸n, configuraci贸n y uso de Homestead

5

Instalar Laravel Sanctum

6

API de autenticaci贸n: laravel UI y laravel sanctum

Manejo de tu base de datos con Laravel

7

Capa de transformaci贸n con API Resources

8

Manejo de relaciones en bases de datos con Laravel

9

Relaciones Polim贸rficas en Eloquent

La terminal de Laravel

10

C贸mo crear comandos para la terminal de Laravel

11

Ejecutando comandos desde la API

12

Programaci贸n de tareas

Eventos y tareas de Laravel

13

Eventos y Listeners en Laravel

14

Eventos de Eloquent

15

Introducci贸n al uso de Queues y Jobs

16

C贸mo disparar eventos en Queues

17

Laravel Horizon

Manejo de errores

18

C贸mo capturar y leer errores con la clase Handler

19

Excepciones personalizadas

20

Excepciones HTTP personalizadas y debugging con Laravel Telescope

21

Configuraci贸n de logs y channels en Laravel

El coraz贸n de Laravel

22

Ciclo de vida de una aplicaci贸n en Laravel

23

驴Qu茅 son los service containers?

24

驴C贸mo funciona un service container?

25

Registro y carga de clases con service providers

Creaci贸n de paquetes

26

驴C贸mo crear mis propios paquetes de Laravel?

27

Propiedades para manejo de dependencias

28

Comprende el archivo composer.json

29

Extendiendo composer.json, autocarga de clases y PSR-4

30

Crear mis propios Services Providers

31

Publicaci贸n de archivos

32

Uso de repositorios locales

33

Publicaci贸n de paquetes en packagist

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Relaciones Polim贸rficas en Eloquent

9/33
Recursos

Aportes 27

Preguntas 1

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Reg铆strate o inicia sesi贸n para participar.

Esta clase si me decepcion贸, no tiene una buena explicaci贸n y es mucho c贸digo sin sentido.

Dejo el repositorio del proyecto con Laravel 8:

https://github.com/RetaxMaster/platzi-api/commit/b0efbf712f5b2580a758fe25a8b6cfb09440d385

WTF qu茅 pasa con este curso? Sergio mete c贸digo sin m谩s y encima le faltan pedazos al c贸digo, vean en Archivos y enlaces el repositorio y se dar谩n cuenta que est谩 incompleto en el video. Italo hubiera dado mucho mejor este curso 馃し鈥嶁檪锔

Ok, voy a intentar dar mi explicaci贸n de lo que est谩 pasando en esta clase, es importante tener en cuenta que se establecer谩 una relaci贸n polimorfa muchos a muchos (MaM) por lo que tienen que tener nociones de la relaci贸n MaM, para entender las relaciones polimorfa les dej贸 el siguiente video que encontr茅 dentro de los aportes de esta clase y utiliza un ejemplo de relaciones polimorfas uno a muchos: relaciones polimorfas uno a muchos.
.
Primera parte - Relaci贸n a establecer
Primero que nada hay que entender que es lo que vamos a relacionar a nivel de base de datos, esto es una entidad que pueda calificar (un usuario, un invitado, una sesi贸n, etc) con una entidad que pueda ser calificada (producto, categor铆a, etc.), como muchos usuarios podr铆an calificar muchos productos y muchos productos podr铆an ser calificados por muchos usuarios vemos que se forma una relaci贸n MaM, seg煤n teor铆a de bases de datos relacionales, esta relaci贸n se puede alcanzar mediante tres tablas - una tabla usuarios, una tabla productos y una tabla intermedia o pivote ratings.
.
Segunda parte - Migraci贸n de tabla Ratings
Esta tabla tendr谩 5 columnas importantes, el score, rateable_type, rateable_id, qualifier_type y qualifier_id, los 煤ltimos cuatro pueden inferirse por las instrucciones $table->morphs('rateable') y $table->morphs('qualifier'). As铆 que, 驴qu茅 significan esas columnas?, bueno si vieron el video del inicio de mi comentario espero hayan entendido que se rateable_type y qualifier_type hacen referencia al modelo que recibe calificaci贸n y al modelo que dict贸 dicha calificaci贸n, respectivamente - y rateable_id/qualifier_id hacen referencia a el registro especifico dentro de la tabla de cada type que recibe/dicta la calificaci贸n.
.
Tercera parte - Modelo Rating
El modelo Rating extender谩 de Pivot y no de Model puesto que como ya expliqu茅 nuestra tabla es una de tipo intermedia o pivote, no se porqu茅 se indica el uso de campos auto-incrementables (lo siento 馃槮), y se indica la tabla a la que nos relacionaremos. Despu茅s es como definir cualquier relaci贸n de Laravel, tenemos que indicar el nombre del m茅todo para acceder a la relaci贸n y retornar la relaci贸n polimorfa que no toma argumentos porque como puede relacionarse a varios Modelos la funci贸n MorphTo se encarga de determinarlo.
.
Cuarta parte - Previo al Trait Can Rate
Aqu铆 es donde el titulo avanzado del curso toma sentido jeje, en un sistema diferente a este (llamemosle un sistema normal) lo que se har铆a ser铆a establecer la otra parte de la relaci贸n polimorfa en los modelos espec铆ficos, por ejemplo en el caso del modelo User describir铆amos la relaci贸n de la siguiente forma:

public function ratings()
{
	return $this->morphMany( 'App\Models\Rating', 'qualifier' );
}

lo cual le indicar铆a a Laravel como establecer la relaci贸n polimorfa desde Usuario con Rating. En un sistema como el del profe (llamemoslo un sistema avanzado) quisi茅ramos 鈥渧olverlo m谩s flexible鈥 citando a Sergio, por lo que podemos tomar ventaja de los Traits para delegar la responsabilidad de establecer la otra parte de la relaci贸n polimorfa a una clase en especifico y as铆 poder darle la posibilidad a cualquier clase que queramos de poder calificar, si quieren saber m谩s acerca de que es, como hacer y como usar un Trait les dejo el siguiente enlace: Traits.
.
Quinta parte - Trait Can Rate
Bueno, ahora que entendemos un poco la motivaci贸n de porque se usar谩 un Trait esta parte es la que m谩s me cost贸 jeje,el m茅todo ratings de la clase CanRate es lo que refer铆 como la otra parte de la relaci贸n polimorfa ya que se encargar谩 de relacionar el modelo que le pasen por par谩metro dentro de la tabla ratings usando el qualifier_id y rateable_id como llaves for谩neas para despu茅s retornar los ratings (con timestamps) donde el rateable_type sea el modelo objetivo y el qualifier_type sea el modelo que invoco la relaci贸n.
Bueno, ahora 驴C贸mo invocaremos la relaci贸n? con el m茅todo rate del trait CanRate, lo que hace 茅ste m茅todo es tomar dos par谩metros, modelo y calificaci贸n, el primero har谩 referencia que modelo se va a calificar con el puntaje que se pasa en calificaci贸n, por lo que al momento de invocar la relaci贸n ratings del Trait CanRate podemos encadenar el m茅todo attach (m谩s informaci贸n del m茅todo attach) para b谩sicamente indicar que se escriba en la tabla pivote el id que tenga el modelo relacionado al score ya antes mencionados.
.
espero haberles ayudado y no confundido m谩s, jeje.

Si saben ingles este es una muy buena explicaci贸n de las relaciones polim贸rficas: https://www.youtube.com/watch?v=rx1DQBE01b0

Por m谩s avanzado que sea un curso, a este le falta demasiada planeaci贸n, estructuraci贸n y enriquecimiento de conceptos del framework. Es importante resaltar que el profesor es bueno pero se nota que el TEAMPLATZI sac贸 este curso de af谩n.

A este curso le falta m谩s amor.

MI EXPLICACI脫N:
.
EJEMPLO1:
.
Un USER le puede dar likes a muchos VIDEOS de YouTube.
.
Y Un VIDEO de YouTube puede tener likes de muchos USERS.
.
Esto es una relaci贸n muchos a muchos, as铆 que se hace una tabla pivote entre ambas, que tenga el user_id y el video_id.
.
Hasta aqu铆 estamos bien.
.
EJEMPLO2:
Ahora supongamos que YouTube, adem谩s de videos, tenga imagenes. Entonces nace una nueva relaci贸n muchos a muchos entre USER e IMAGES. Crear铆as una tabla pivote que tenga el user_id y el image_id.
.
Listo. Entonces quedar铆a as铆:
.
ejemplo1: user_id y video_id
ejemplo2: user_id y image_id
.
Estas dos tablas son muy parecidas. Entonces alguien quiso ahorrarse las dos tablas, y tener una sola que haga todo eso, y aqu铆 es donde entra la relaci贸n polim贸rfica:
.
Una tabla que tiene: user_id, likeable_type y likeable_id.
.
El likable_type ser铆a VIDEO, o IMAGE o etc
Y el likable_id ser铆a el ID del likeable_type. (video_id 贸 image_id 贸 etc)
.
FIN.
.
https://youtu.be/wKOFUzqSh74

Links al ejemplo mas sencillo de relaciones polimorficas: https://laravel.com/docs/7.x/eloquent-relationships#polymorphic-relationships

He hecho ya alguna vez de relaciones polim贸rficas de muchos a muchos y les aseguro que no es tan complejo, adem谩s, el profesor no sigue convenciones que recomienda laravel, y aunque no sea algo obligatorio es una l铆nea que se sigue para no desorientar a muchas personas que vienen por esa l铆nea. LA VERDAD MUY DECEPCIONANTE ESTE CURSO, EL DE API REST BASICO FUE MUCHO MAS INTERESANTE GRACIAS AL PROFESOR QUE SE ESMER脫 EN EXPLICAR DE FORMA CLARA

a este punto no s茅 si dejar el curso aqu铆 e ir a tomar el de Eloquent y luego regresar 鈥 o continuar 鈥

La verdad es que he tenido que arreglar muchos errores, por que el profesor se salta mucho c贸digo y recurrir a repositorios de los que ya han hecho este curso para entender bien鈥 y este tema tan enredado que me dan ganas de dejar el curso hasta aqui鈥

que complejo me ha parecido

Hola, si se encuentran algo desorientados les dejo el siguiente enlace que explica con un ejemplo sencillo qu茅 es, como se crea y como usar un Trait en Laravel:

https://www.develodesign.co.uk/news/laravel-traits-what-are-traits-and-how-to-create-a-laravel-trait/

jaja es la primera vez que veo estas relaciones polim贸rficas en laravel se me complica mucho, pero esta muy interesante as铆 que terminare aprendiendo y a dominar este tema si o si

esta clase daba para tres o cuatro videos 馃槙 al final no esta bien explicado por querer meter todo en un solo video

El problema que veo aqui es que no sigue las convenciones de laravel

Las relaciones polimorficas permite que un modelo se relacion a varios otrso modelos

jaja nunca me habia planteado un relaci贸n polim贸rfica!Gran dato, gracias!!

Muy mal estructurada la clase, le falta mas aclaraci贸n del codigo el uso de los traits,etc.

para quienes tengan dificultades aca el profesor italo morales explica de forma sencilla https://www.youtube.com/watch?v=uT-2pB43vXM

La verdad hasta el momento no me he sentido c贸modo y a gusto con este curso, hay demasiadas cosas inconclusas, la explicaci贸n no es muy buena. Al descargar ciertos elementos, generan error por falta de dependencias que no se comentaron, le falta estructura al curso.

Recomiendo estos dos videos en espanol para comprender las relaciones polimorficas:

Aqui se justifica el titulo curso avanzado, muy buen contenido.

Que tal chicos para todos aquellos que llegaron ac谩 y no entienden nada鈥

1.- Al principio del curso se dijo que es importante que ya tengas experiencia con Laravel鈥 raz贸n por la cual supongo que el profe omite muchas cosas no lo justifico pero lo entiendo鈥

2.- Para entender esta clase primero hay que saber de los siguientes temas

A) Relaciones polim贸rficas  1 a 1,1 a N y N a N( que es la que se usa en esta clase)
B) Traits
C) Test 

Cuando yo tome este curso hace mas de 6 meses me frustre mucho, pero acababa de terminar el curso de introducci贸n a Laravel y los recursos de Laravel disponibles aqu铆 en Platzi, de echo considero que mas bien hizo falta entrar mas a detalle a todos los tipos de relaciones que soporta Laravel, la verdad es que el 煤nico 鈥榩roblema鈥 que encuentro de este video en particular es que puede ser complicado de entender incluso para alguien con experiencia, la ventaja es que reduce mucho el c贸digo, entonces es ah铆 donde uno debe tomar la decisi贸n de usar Traits para este tipo de relaciones que reducen el c贸digo, o escribir mas c贸digo en los modelos involucrados que har铆a mas f谩cil de entender lo que esta pasando

Me he quedado al principio, despu茅s de acabar la migraci贸n ya no entend铆 nada xD

estas clases est谩n retadoras (de entender a la primera)! 馃槚 鈥 bueno, el curso es avanzado 馃 鈥 pensemos que est谩 dise帽ado correctamente para retar a los estudiantes 鈥 馃槵

No s茅, pero creo yo que puede haber otra manera de usar las relaciones polimorficas para lograr el mismo objetivo.