Sobre el proyecto blog de la sesión anterior, vamos a añadir estos cambios:
Usuario y el modelo de Post, ambos ya existentes en la aplicación, de forma que un post es de un usuario, y un usuario puede tener muchos posts. Deberás definir una nueva migración de modificación sobre la tabla posts que añada un nuevo campo usuario_id, y establecer a partir de él la relación, como hemos hecho en el ejemplo con autores y libros.posts/index.blade.php para que, junto al título de cada post, entre paréntesis, aparezca el login del usuario que lo creó.Continuamos con el proyecto blog anterior. Ahora añadiremos lo siguiente:
UsuariosSeeder, con un factory asociado llamado UsuarioFactory (renombra el que viene por defecto UserFactory para aprovecharlo). Crea con esto 3 usuarios de prueba, con logins que sean únicos y de una sola palabra (usa el faker), y passwords también de una sola palabra, sin encriptar (para poderlos identificar después, llegado el caso).PostsSeeder con un factory asociado llamado PostFactory. En el factory, define con el faker títulos aleatorios (frases) y contenidos aleatorios (textos largos). Usa el seeder para crear 3 posts para cada uno de los usuarios existentes.Utiliza la opción php artisan migrate:fresh --seed para borrar todo contenido previo y poblar la base de datos con estos nuevos elementos. Comprueba después desde la página del listado de posts, y desde phpMyAdmin, que la información que aparece es correcta.
Opcional
Añade al proyecto blog un nuevo modelo llamado Comentario, junto con su migración y controlador asociados. Cada comentario tendrá como campo el contenido del comentario, y estará relacionado uno a muchos con el modelo Usuario, de forma que un usuario puede tener muchos comentarios, y cada comentario pertenece a un usuario. También tendrá una relación uno a muchos con el modelo Post, de modo que un comentario pertenece a un post, y un post puede tener muchos comentarios. Por lo tanto, la migración de los comentarios deberá tener como campos adicionales la relación con el usuario (usuario_id) y con el post al que pertenece (post_id).
Aplica la migración para reflejar la nueva tabla en la base de datos, y utiliza un seeder y un factory para crear 3 comentarios en cada post, con el usuario que sea. A la hora de aplicar todo esto, borra los contenidos previos de la base de datos (migrate:fresh --seed).
AYUDA: si quieres elegir un usuario al azar como autor de cada comentario, puedes hacer algo así:
Usuario::inRandomOrder()->first();
En este caso, sería conveniente que ese usuario aleatorio se añada directamente en el factory del comentario, y no en el seeder, ya que de lo contrario es posible que genere el mismo usuario para todos los comentarios de un post.
En la ficha de los posts (vista posts/show.blade.php), añade el código necesario para mostrar el login del usuario que ha hecho el post, y el listado de comentarios asociado al post, mostrando para cada uno el login del usuario que lo hizo, y el texto del comentario en sí. Utiliza también la librería Carbon para mostrar la fecha de creación del post (o la de los comentarios, como prefieras) en formato d/m/Y.
Aquí tienes una captura de pantalla de cómo podría quedar:
¿Qué entregar?
Como entrega de esta sesión deberás comprimir el proyecto blog con todos los cambios incorporados, y eliminando las carpetas vendor y node_modules como se explicó en las sesiones anteriores. Renombra el archivo comprimido a blog_05.zip.