Cómo llenar con datos falsos la bbdd de un blog - Aprende a crear un sistema de blog con Laravel 10
HTML-код
- Опубликовано: 29 сен 2024
- En este capítulo, aprenderás cómo utilizar las factorys de Laravel para crear datos de prueba para tu blog. Las factorys son una herramienta poderosa que te permiten generar fácilmente datos de prueba para probar y validar tu aplicación. Comenzaremos por comprender los conceptos fundamentales de las factorys, incluyendo cómo definir y utilizar los modelos y las factorys. Luego, te mostraremos cómo crear factorys personalizadas para llenar tu base de datos con datos realistas y relevantes para tu aplicación. También exploraremos cómo utilizar las factorys en conjunto con las pruebas automatizadas para garantizar que tu aplicación esté funcionando correctamente. ¡Aprovecha este capítulo para aprender cómo utilizar las factorys para acelerar el proceso de desarrollo de tu blog!
------------------------------------------------------------------------------------------------
CURSOS
🔴 Facturacion electronica Perú: youtube.coders...
🟠 Laravel avanzado: youtube.coders...
🟢 Ecommerce: youtube.coders...
🔵 Api: youtube.coders...
🟠 Plataforma de cursos: youtube.coders...
🔴 Vue e Ineria: youtube.coders...
🟣 Eloquent Avanzado: youtube.coders...
🟡 Pasarela de pagos: youtube.coders...
⚫ Laravel Web Socket: youtube.coders...
🟣 Notificaciones: youtube.coders...
🟢 Laravel Excel: youtube.coders...
🔵 Digital Ocean: youtube.coders...
🟡 Laravel Voyager: youtube.coders...
🟣 Datatable Livewire: youtube.coders...
🟠 Tenancy for Laravel: youtube.coders...
🔵 TDD Laravel: youtube.coders...
⚫ Traducir páginas: youtube.coders...
🟠 Wire UI: youtube.coders...
🔴 Acortador de links: youtube.coders...
🟡 Banhammer for laravel: youtube.coders...
🟢 Laravel backup: youtube.coders...
🔵 Actualizar a Laravel 10: youtube.coders...
-----------------------------------------------------------------------
DONACIONES
Patreon: / codersfree
PayPal: www.paypal.com...
----------------------------------------------------------------------------------------------------
Generar dominio local: n9.cl/coders-free
Si faker les está dando problemas a la hora de descargar las imagenes, prueba la siguientes solucion:
Abre el siguiente archivo: vendor\fakerphp\faker\src\Faker\Provider\Image.php y reemplaza las siguientes líneas de código:
public const BASE_URL = 'placehold.jp'; // cambie la URL
curl_setopt($ch, CURLOPT_FILE, $fp); //línea existente
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//nueva línea
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//nueva línea
$success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;//línea existente
Solucioné el problema de -> Cannot write to directory "public/storage/posts" ==> ejecutando este comando: "php artisan storage:link"
Me sirvió estos pasos para que faker me descargara las imágenes
Muchas gracias por esa informacion addicional !
seguro me hubiera pasado el dia buscando una solucion
@@BlalB correcto eso es lo que hay que hacer
bro sigue dandome el problema, se me crea la carpeta pero no las imagenes :( que podra ser?
Gente, si les sale error "Cannot write to directory "public/storage/posts" cambien estas 2 lineas de códigos por esta en el archivo databaseSeeder
ANTIGUAS
Storage::deleteDirectory(''posts');
Storage::makeDirectory('posts');
NUEVAS
Storage::deleteDirectory('public/posts');
Storage::makeDirectory('public/posts');
muchas gracias, funciona
Gracias :D
Me fue de ayuda me quede estancado ahí
gracias pana
graciasss
a mi no se descargaron esas imagenes
Quienes estén usando Laravel 8.64.0 les dará error al ejecutar los seeders porque crea la carpeta fuera de public. Eso es porque en el archivo .env hay una opción que no tiene en el del video: FILESYSTEM_DRIVER=local y ese valor local lo cambian por public y ya usa el driver que queremos y crea la carpeta donde queremos que la cree
gracias
Si tienen problemas al momento de crear el directorio con Storage::makeDirectory('posts'); intenten con Storage::makeDirectory('public/posts');
Para que aparezca el acceso directo "storage" dentro de public hay que ejecutar
php artisan storage:link
Saludos!
Solucione "Cannot write to directory, public/storage/posts" cambiando
también en el archivo .env "FILESYSTEM_DRIVER=local" por "public" y ya esta solucionado
lo otro seria verificar que en la carpeta blog/public exista un acceso directo apuntando a la carpeta blog/storage/app/public y no una carpeta llamada Storage en blog/public
yo lo solucione con el comando:
php artisan storage:link
esto creo una clonacion de la carpeta storage/app/public en la carpeta public ya que no habia dentro de esta el acceso directo a storage/app/public, espero les sirva de ayuda tambien, por cierto de momento un curso muy productivo gracias
gracias por la ayuda
Se soluciona cambiando "FILESYSTEM_DRIVER=local" por "public" en el archivo .env y *ya no* en el archivo filesystem.php
@@richardaguirrecloud en mi caso puse 'public/posts' y ya no me dio el error cannot write to directory "public/storage/posts"
Si usan Valet en MacOs y les sale el error "Cannot write to directory "public/storage/posts" puede ser que no esté el link de la carpeta en public, por lo cual deben correr php artisan storage:link
me faltaba esto gracias!
Muchas gracias estaba teniendo ese error en windows
Nada ya realize este proceso para laravel 9, las imágenes se crean pero apenas se crea una y luego se borra, además de ya probar las configuraciones en el archivo de faker /image, no funciona, las bases de datos se llenan correctamente, pero esas imagenes se borran apenas se crean, igual forma modificque el archivo .env y nada
Me pasa lo mismo😰
Yo tengo el mismo problema
como lo resolvieron??
en laravel 8 no pasa este problema pero con laravel 9 se borran
Si les sale el error de 1406 Data too long for column 'name' at row 1 (SQL: insert into `posts`...)
Reivsen el Post Factory, en el faker del name, utilicen text() en lugar de sentence().
El problema consiste en que habíamos definido el campo name como un varchar de 45 max, mientras sentence genera una línea mucho más extensa. Al usar text(20) podemos definir el valor de caracteres.
Hola compañeros tengo un problema, al momento de ejecutar las migraciones y los seeder la carpeta pots se crea y empieza a llenarse con un único archivo de imagen pero se borra inmediatamente, y vuelve aparecer el archivo y se borra nuevamente al final la carpeta termina vacía. Agradezco cualquier ayuda
Lastima que en Venezuela estamos en la situación que estamos muchos los de clase media baja, sino con mucho gusto le haría un aporte porque de verdad creo que lo que haces con la enseñanza de programación en todos los ámbitos es algo extraordinario. Saludos y Gracias
Para los que que dejaron la tabla Tag con relacion polimorfica:
foreach ($posts as $post) {
Image::factory(1)->create([
'imageable_id' => $post->id,
'imageable_type' => Post::class
]);
$post->tags()->attach(
rand(1,6),
[
'taggable_id' => $post->id,
'taggable_type' => Post::class
]
);
$post->tags()->attach(
rand(6,12),
[
'taggable_id' => $post->id,
'taggable_type' => Post::class
]
);
}
Hola @CodersFree, al hacer el migrate:fresh --seed me sale un error que me dice: Class "Database\Factories\CategoryFactory" not found
Seguí tu video muy minuciosamente y me dió ese error. Podrias decirme de que puede ser. Gracias
Hola amigos... me sale el siguiente error de datatime
Illuminate\Database\QueryException
SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: 'App\Models\Post' for column `jetblog`.`images`.`imageable_type` at row 1 (SQL: insert into `images` (`url`, `imageable_id`, `imageable_type`, `updated_at`, `created_at`) values (posts/d55b53f39d1349e863c5eda94929d0a0.png, 1, App\Models\Post, 2021-03-07 23:24:38, 2021-03-07 23:24:38))
at C:\xampp\htdocs\jetblog\vendor\laravel\framework\src\Illuminate\Database\Connection.php:678
674▕ // If an exception occurs when attempting to run a query, we'll format the error
675▕ // message to include the bindings with SQL, which will make this exception a
676▕ // lot more helpful to the developer instead of just the database's errors.
677▕ catch (Exception $e) {
➜ 678▕ throw new QueryException(
679▕ $query, $this->prepareBindings($bindings), $e
680▕ );
681▕ }
682▕
Por si os da error la clase Str ( que dependerá de la versión que uses de Laravel ) podéis tratar de importar desde el paquete de Illuminate
' use Illuminate\Support\Str; '
Hola buena noche, realice los pasos pero a la hora de hacer la migracion si me crea la carpeta posts, no me sale ningun error, pero no me aparece ninguna imagen en la carpeta, ya agregue las dos lineas pero sigue sin descargarse.
me sale el mismo error solucionaste??
hay algun repositorio de donde pueda fijarme, me esta dando un error, me dice que la tabla para relacionar los posts->tags, no se encuentra
excelente gracias
Excelente video tutorial, me ha ayudado a entender el funcionamiento del framework. Estuve en el punto en el cual se llenan los datos con faker. Al intentar descargar las imágenes, pude ver que intenta crearlas, pero las elimina. He buscado la solución, pero sobre este error no hay casi posts relacionados.
Hola, la solución está fijada en el grupo Coders Free de Facebook, te recomiendo que te des una vuelta por ahí.
Hola estoy trabajando con laravel 9 estoy haciendo al pie de la letra el factory se ejecutan todos los seeders y en la tabla de images solo crea posts/ en la 'url' en la base de datos y no se crean las imágenes
'url'=>'posts/'.$this->faker->image('storage\app\public\posts', 640, 480, null, false),
no se si esta se la ruta correcta para laravel 9 ('storage\app\public\posts',
no se donde esta el error
uso servidor xampp
Hola! me pasa lo mismo... solucionaste?
Hola, muy buenos videos me han servido demasiado para un proyecto en la escuela y tengo una pregunta y espero me puedas ayudar, en el caso que tenga una relación de muchos a muchos como podría hacer el factory y el seeder, ¿sería igual como si fuera una polimorfica?
¿Cómo pudiste resolverlo? No encuentro nada en internet.
Me sale un error Class "Database\Factories\CategoryFactory" not found pero no encuentro todavia el error
Gente, estoy siguiendo el curso en laravel 9 y la uñtima version de XAMPP pero a la hora de correr los seeds me crea los archivos de la imagen pero no los conserva no se por que pasa eso favor
No me da errores pero las imágenes no se descargan, se van reemplazando a medida que se descargan :C
Lo mismo, encontré otra forma de hacerlo pero quiero que me funcione de la misma que en el video.
Hola, feliz noche para los que les de el error "Cannot write to directory "public/storage/posts", cambien la clase Storage por la clase file, y al metodo make directory lo pueden crear asi: File::makeDirectory($folder,0755,true,true);
Esto me funciono para poder seguir con el tuto, la el metodo makeDirectory de la clase Storage siempre me retornaba falso, y por ende ni que hiciera lo que hiciera lograba crear el Dir
Saludos desde Vzla, Gracias por el Tuto, me ha sido de utilidad para comprender lo nuevo de laravel 8, si tienes videos acerca de como usar mas las tecnologias de front com vue y react, mucho te lo agradeceria, estos sirven por si salen apps que no esten hechas con jetstream y livewire
¿sigue vigente para laravel 10.17.1?
muy buenas explicaciones, muchas gracias
Hola, no pude arreglar lo de la ruta a la carpeta posts, me sigue saliendo el error, no entiendo porque si hice el cambio o el arreglo tal cual :c, me tocó crear la carpeta manualmente :v
Una pregunta si uno tiene un nombre y un apellido en variables independientes como saco el slug de esas dos variables?
hola una problema al intentar descargar las imágenes en la ruta public/storage/posts no descarga nada pero al intentarlo en la carpeta public/images si, ayuda como podría solucionar esto
chicos para que le funcione el codigo tengan en cuentan los espacios , es decir que no ahiga espacio de mas
en mi caso ese era mi problema corregi esos espacios y me da todo bien
Mis imágenes se crearon normal, pero en el archivo storage/app/public/post y al momento de abrir el link del storage en la carpeta 'public' me lanza un error.
hermano, al intentar el "php artisan make:fresh --seed" me lanza este error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'anme' in 'field list' (SQL: insert into `tags` (`anme`, `slug`, `updated_at`, `created_at`) values (sunt, sunt, 2021-06-05 01:45:00, 2021-06-05 01:45:00))
Has llamado a una columna anme y no name
@Coders Free como se puede hacer para realizar un factory de una relación muchos a muchos donde la tabla intermedia tenga un atributo extra por ejemplo
Facturas
Productos
factura_producto tiene el id, factura_id, producto_id, cantidad.
Saludos, y muchas gracias por el curso :)
Obtuve este error después de hacer el php artisan make:migration --seed
Call to undefined method App\Models\Category::id()
¿Alguien sabe cómo resolverlo?
Igual me sucede a mi, vos pudiste solucionar ese error?
F
like y sub para que pueda comprar un mejor mic, es lo unico q le falta para q sea todo perfecto. Muchas gracias, segui asi crack!
Hola víctor, muy buenos tus cursos y explicaciones, gracias, pero pon estas aclaraciones en el curso en tu plataforma , estaba buscando en internes y cuesta mas conseguir la solución, me vine a youtube, a preguntar, pero aquí esta la solución
Buenas noches chicos! He hecho este ejercicio sin ningún problema, pero tengo inconvenientes al intentar añadir un url adicional para otra carpeta de imáges. Esto ya que la cardinalidad corresponde uno a uno y por ende cualquier entidad puede almacenar imágenes. Espero y alguien se haya enfrentado a este pequeño reto.
si uso public no muestra las imagenes :( default' => env('FILESYSTEM_DRIVER', 'public'), solo con local puedo verlas usando Storage::url
Hola, cuando defines el filesystem driver en public, este considera que el dominio que estas usando es el que has definido en la variable app_url dentro de tu archivo .env
Si esa información no coincide con el dominio que estas usando no te va a funcionar
ahora el problema es el post... :( "public/storage/posts" hago tal y como lo explicas y me sigue botanto el error crea la carpeta, pero la crea fuera public
Hola Juandi, busca el grupo Coders Free en Facebook y ahí publica tus dudas
intenta esto en DatabaseSeeder.php => Storage::makeDirectory('public/posts');
@@omarjimenez7499 gracias!
@@omarjimenez7499 Gracias x2
Pero... Por qué al del video le funciono asi y alguno de nosotros no?
@@omarjimenez7499 Gracias! Si que funciona. Me pregunto en que difiere el que utlicemos el storage para crear la carpeta y el que la creemos nosotros directamente. (También funciona)
Aparentemente por lo que he visto ya faker para imágenes no está funcionando... @CodersFree
sigue funcionando
Excelente curso, explicas muy bien y ya tengo más claro el concepto de factorys y seeders. Esperando con ansias los siguientes vídeos.
como ago para crear datos decimales con faker
Hola
A mi no me crea la carpeta posts y me sale ese error el de la ruta. Cree la carpeta llamando el facade y pasando e metodo makeDirectory y me sigue dando ese mismo error Como lo puedo solucionar??
Crea la carpeta post manual
Hola! Estoy atorado; tengo laravel 9 y despues de ejecutar los seeders, en la carpeta public/storage/posts las imágenes se crean y se borran automáticamente... Veo que muchos tenemos el mismo error. Alguno dió con la solución? Gracias.
La solución esta fijada en los comentarios
@@CodersFree Si pero como que no aplica para laravel 9 pero no es un problema del código sino del faker en si
Hola de nuevo, claro que aplica para Laravel 9
Genial profe, como siempre. Muchas gracias.
hola Coders Free instale la extension de atajos de laravel pero igual no me crea los atajos, a alguien le funciona el php intelephense?
Toma tiempo a que la extensión funcione
Cuando intento el método funciona perfectamente pero no descarga las imágenes
Hola estimado. La solución está en el grupo Coders Free de Facebook
@@CodersFree Gracias, encontré la solución, y funciona perfectamente.
Porque a mi no me salen las relaciones en el phpmyadmin pero si funciona en laravel???
Elimna las tablas y vuelvelas a crear pero antes de eso tiene que ir config/database.php y en array de mysql en la opcion de engine = "null" cambia a engine = "innodb".
Excelente vídeo Saludos!!!
en mi carpera public no aparece ese acceso directo a storage. como lo genero?
pon en la consola php artisan storage:link
Me salió el siguiente error: "Unknown formatter "sentence"
Tengo el mismo error, alguien me pueda ayudar por favor !!
@@hernannerysotochavez5968 Bro, ya pudiste resolver?, yo tenia el error por que había escrito mal tenia "setence" en vez de sentence
Para quienes no les aparece el nombre de la imagen sino solo el posts/ en base de datos la forma en la que lo solucione fue la siguiente:
Abran el siguiente archivo: vendor\fakerphp\faker\src\Faker\Provider\Image.php
en la Linea aproximada 113 a la 121 esta la sig fraccion de codigo
if (!$success) {
unlink($filepath);
// could not contact the distant URL or HTTP error - fail silently.
return return;
}
el return lo remplace por el $filename y quedo de la siguiente manera
if (!$success) {
unlink($filepath);
// could not contact the distant URL or HTTP error - fail silently.
//cambie el return false; por un return $filename;
return $filename;
}
y asi me funciono.
Amii si me crea la carpeta cursos en storage, pero lo raro es que descarga una imagen y enseguida la elimina, y asi hace con todas y a lo ultimo no queda ni una imagen.
Esta solucion que planteas si me guarda en la base de datos la url courses/e7bfee9ea6de1b3b20446ee070640bab.png
completa, pero la carpeta courses esta vaciaaaa!!!
Me pasa lo mismo que la persona de arriba Jesus David hernandez
@@jesusdavidhernandez9228 Tengo el mismo problema.
@@johancasso7057 Holaa Brot alguna Solucion ?? Yo no he encontradooo!!!
@Coders Free hola Victor, tengo el mismo problema de las imágenes que se descargan y a la vez se eliminan, estoy usando laragon full 4.0.16 y php 7.4.7, de antemano agradezco el apoyo, en la tabla images en el campo url solo almacena posts/
Las razones pueden ser muchas, pero las principales razones que he visto que tienen las personas que utilizan Laragon, una es que han descargado una versión lite de php, y no la versión completa, y otra que han instalado una versión más actual de php sin desinstalar la versión previa, lo que hace que tengan dos versiones de PHP instaladas y lo cual le causa incompatibilidad.
Trata solucionado esos posibles problemas
Ya encontré la solución
Abre el siguiente archivo: vendor\fakerphp\faker\src\Faker\Provider\Image.php
y a partir de la linea 106 agregen estás dos lineas de código:
curl_setopt($ch, CURLOPT_FILE, $fp); //línea existente
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//nuevas líneas
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//nuevas líneas
$success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;//línea existente
Esto les solucionará el problema, y podrán seguir con el curso de manera normal.
@@CodersFree específicamente hay que agregarlo después de la linea 112
Muchas gracias por el video, ejecute el seeder, no me salio ningun error, pero la tabla images, campo url solo me creo "posts/", alguna sugerencia de por no funciono, en la carpeta posts la creo pero no almaceno ninguna imagen.
Busca el grupo Coders Free en facebook y publica pantallazos de tu código
me pasa lo mismo ^^
podría ser el servicio de imagenes?
tengo el mismo problema
Si faker les está dando problemas a la hora de descargar las imagenes, hagan lo siguiente.
Abrán el siguiente archivo: vendor\fakerphp\faker\src\Faker\Provider\Image.php
y a partir de la linea 106 agregen estás dos lineas de código:
curl_setopt($ch, CURLOPT_FILE, $fp); //línea existente
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//nueva línea
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//nueva línea
$success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) === 200;//línea existente
Esto les solucionará el problema, y podrán seguir con el curso de manera normal
Algo habré hecho mal porque no guarda los nombres de las url de las imagenes (sólo el prefijo posts/) y si abro el directorio posts dentro de storage mientras hace la migración veo como genera fotos y las borra automáticamente, todas con un peso de 0 bytes :S
Seguramente estas trabajando con una versión de php inferior a la 7.3
Recuerda que para que Laravel 8 funcione bien, debes trabajar con php 7.3 o superior
@@CodersFree gracias Víctor lo comprobaré cuando llegue a casa :)
lo he comprobado y rueda la versión de php 7.4.9 iré trasteando a ver si doy con ello gracias de todas formas
si doy con ello lo comentaré
no mostraste la tabla users! para entender porque primero pusiste una credencial 🙆🏻♂️
Hola, modificó la tabla users? porque me sale un error en el la tabla posts en el campo user_id