3. Llenar con datos falsos la bbdd de un blog


11 comentarios

Inicia sesión para comentar

Comentarios:

  • Fri Fri Tanga

    Fri Fri Tanga hace 1 año

    Hola Victor  estaba siguiendo tu curso pero me encontré con este error. 

    ErrorException

     Array to string conversion

     at C:\laragon\www\Blog\blog\vendor\laravel\framework\src\Illuminate\Support\Str.php:99
        95▕      * @return string
        96▕      */
        97▕     public static function ascii($value, $language = 'en')
        98▕     {
     ➜  99▕         return ASCII::to_ascii((string) $value, $language);
       100▕     }
       101▕
       102▕     /**
       103▕      * Transliterate a string to its closest ASCII representation.

     1   C:\laragon\www\Blog\blog\vendor\laravel\framework\src\Illuminate\Support\Str.php:99
         Illuminate\Foundation\Bootstrap\HandleExceptions::handleError("Array to string conversion", "C:\laragon\www\Blog\blog\vendor\laravel\framework\src\Illuminate\Support\Str.php", ["en"])

     2   C:\laragon\www\Blog\blog\vendor\laravel\framework\src\Illuminate\Support\Str.php:786
         Illuminate\Support\Str::ascii("en")

  • Jose

    Jose hace 1 año

    Me continua dando el error de que no se puede crear e directorio posts.  No se si con esto que dejo podrias decirme por donde va el error xq añadi las lineas que pusiste “use Illuminate\Support\Facades\Storage;” en DatabaseSeeder. 

    *****

      Cannot write to directory "public/storage/posts"

     at vendor\fakerphp\faker\src\Faker\Provider\Image.php:128
       124▕
       125▕         $dir = null === $dir ? sys_get_temp_dir() : $dir; // GNU/Linux / OS X / Windows compatible
       126▕         // Validate directory path
       127▕         if (!is_dir($dir) || !is_writable($dir)) {
     ➜ 128▕             throw new \InvalidArgumentException(sprintf('Cannot write to directory "%s"', $dir));
       129▕         }
       130▕
       131▕         // Generate a random filename. Use the server address so that a file
       132▕         // generated at the same time on a different server won't have a collision.

     1   vendor\fakerphp\faker\src\Faker\Generator.php:696
         Faker\Provider\Image::image("public/storage/posts")
     2   vendor\fakerphp\faker\src\Faker\Generator.php:696

    • Donmartin Works hace 1 año

      yo uso L10, yo lo solucioné de la siguiente manera: en DatabaseSeeder cambie Storage::makeDirectory('posts');  =>  Storage::makeDirectory('public/posts');

    • Andres hace 1 año

      tenia el mismo problema lo soluciones con tu respuesta, gracias.

    • Pablo Cs:go hace 9 meses

      Me pasó exactamente lo mismo, muchas gracias!

  • Sebastian Chinga

    Sebastian Chinga hace 1 año

    Hola Victor repasando este video mi pregunta es la siguiente, como hago para el siguiente caso:

    Quiero almacenar imagenes de unos productos y de categorias, por lo tanto las imagenes de los productos se almacenaran en la carpeta public/storage/products y las imagenes de las categorias seran almacenadas en la carpeta public/storage/products/categories; osea las imagenes de los productos y las categorias en carpetas separadas. Logre crear la carpeta ‘products’ y dentro logre crear la carpeta ‘categories’. Ahora como hago para que las imagenes se almacenen en sus respectivas carpetas? Teniendo en cuenta que se trabaja con los factories y los seeders. Espero me responda la duda. Saludos.

  • Leenh Alexander Bustamante Fernandez

    Leenh Alexander Bustamante Fernandez hace 1 año

    Las imágenes desaparecen, al hacer la migracion las imagenes parecen descargar pero luego desaraparecen, podrias ayudarme?

    edite este comentario 3 veces jejej al final logre solucionar los problemas con las imagenes

    • Hansb hace 1 año

      Cómo solucionaste jjj?

    • Leenh Alexander Bustamante Fernandez hace 1 año

      cambia la url de donde descargas la imagen

       

  • Crlos Nuñez

    Crlos Nuñez hace 1 año

    me arroja 2 problemas

     C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Events\Dispatcher.php:252
         Illuminate\Events\Dispatcher::Illuminate\Events\{closure}("eloquent.created: App\Models\User")

     2   C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Concerns\HasEvents.php:188
         Illuminate\Events\Dispatcher::dispatch("eloquent.created: App\Models\User")

    • Crlos Nuñez hace 1 año

      Array callback must have exactly two elements

       at C:\xampp\htdocs\blog\vendor\laravel\framework\src\Illuminate\Events\Dispatcher.php:424
         420▕             if ($wildcard) {
         421▕                 return $listener($event, $payload);
         422▕             }
         423▕
       ➜ 424▕             return $listener(...array_values($payload));
         425▕         };
         426▕     }
         427▕
         428▕     /**

  • Danny Pascual Gomez Sanchez

    Danny Pascual Gomez Sanchez hace 1 año

    Se puede hacer uso de la función imageUrl generando el parametro word aleatorio para no repetir imagenes. comparto la solición.
     

    1. En ImageFactory => 
      public function createPostImage(){

        return $this->faker->imageUrl(640, 480, 'business', true, $this->faker->word(5).' - Posts - @pascualdas');

    }

    public function createUserImage(){

        return $this->faker->imageUrl(640, 480, 'people', true, $this->faker->word(5).' - Users - @pascualdas');

    }

     

    2. En UserSeeder => 

     

    $users = User::factory(99)->create();

            foreach ($users as $user){


     

                $image = $imgGenerator->createUserImage();

     

                Image::factory(1)->create([

                    'url' => $image,

                    'imageable_id' => $user->id,

                    'imageable_type' => User::class,

                ]);

            }

    Nota: Yo implemente imagenes para  usuarios y posts.

    • Victor Arana Flores hace 1 año

      Genial. Gracias Danny

  • Shakadabra

    Shakadabra hace 1 año

    vendor\fakerphp\faker\src\Faker\Provider\Image.php

     

    public const BASE_URL = 'https://placehold.jp';  // cambie la URL 

     

    Una vez abierto este archivo buscaremos en las lineas aprox 114 y agregaremos el siguiente codigo, tomemos como referencia el codigo existente 

     

    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

    • Victor Arana Flores hace 1 año

      Esta funcionando con esta solución amigo? Excelente aporte

    • Juan Oyanedel hace 1 año

      Si, lo acabo de probar y funciona perfecto con la solución que indico @Shakadabra

    • Antonio Salcedo hace 1 año

      Aunque en la consola empieza a salir un poco de símbolos raros cada vez que va creando, no sé si eso este bien o mal, pero si me funciono la solución a la perfección, muchas gracias fue de gran ayudar para proseguir, ya que aparte de que lo estoy haciendo el blog en Laravel del lado del frontEnd lo estoy aplicando con React y está algo complejo solucionar dos tipos de cosas jaja pero gracias

    • Andres hace 1 año

      Con este cambio como quedo el archivo yo lo intente pero me da error en las líneas donde coloco el código.

  • Jose Quijado

    Jose Quijado hace 1 año

    Con el método fakes→image() se produce un fallo. Las imágenes se descargan, se graban en el directorio correspondiente, y se borran inmediatamente. Según se graban, se borran al momento. Por lo tanto, al terminar el proceso, el directorio de imágenes queda vacío. Además, al no quedar las imágenes almacenadas, en cada registro de la tabla images, en el campo url, queda el valor posts/, sin más, sin nombre de archivo. Por qué se produce eso? Según he leído en Internet, es un fallo de la clase Faker. He probado todo lo que indicas en tu video en YouTube, pero nada de eso resuelve el problema.

    • Victor Arana Flores hace 1 año

      Así es estimado. La librería faker está fallando. Lo que queda es descargar las imagenes de manera manual.

    • Jose Quijado hace 1 año

      Llevo todo el dia examinando este problema. En la clase Faker hay una comprobación como esta: $success = curl_exec($ch) && curl_getinfo($ch, CURLINFO_HTTP_CODE) == 200; Se pretende que el valor de CURLINFO_HTTP_CODE sea 200, es decir, que la lectura se ha hecho correcta. En lugar de eso es 403 (Forbidden). Es decir, cuando la clase intenta acceder  con cUrl a https://via.placeholder.com el servidor no autoriza el acceso. Así, no sé si realmente es un fallo de la clase Faker, o del servidor donde se generan las imágenes. De un modo u otro, el caso es que no funciona. Si te enteras de una solución alternativa, ponla aquí, por favor.

    • Victor Arana Flores hace 1 año

      El año pasado el creador de faker indico que no daría más mantenimiento a la librería, y lamentablemente no quiso ceder el proyecto para que sea la misma comunidad la que se encargue de mantenerlo. 

      Laravel se encuentra en constante evolución, y por lo que faker se quedará totalmente obsoleta. 

      Por el momento lo que queda es esperar a que salga una nueva tecnología que reemplace a faker, y Laravel decida trabajar con ella, o quien sabe, que Laravel tome  la iniciativa, y cree su propia librería.

  • Jose Quijado

    Jose Quijado hace 1 año

    Al directorio se le deben dar permisos, con chmod(). Debajo de Storage::makeDirectory('posts'); yo pongo chmod('storage/app/public/posts/', 0777);

  • Jhan Sebastian Vega

    Jhan Sebastian Vega hace 1 año

    Holaa.. He ido a youtube y al inicio las imagenes me las guardaba solo como post/ en la base de datos.. Luego pude corregirlo pero al momento de que me va creando las imagenes me las va eliminando.. Ya he puesto las lineas que decias y todo eso pero sigo con el mismo error

    • Victor Arana Flores hace 1 año

      Hola estimado, Faker esta dando problemas. Te sugiero que veas otras formas de descargar imagenes para hacer pruebas.

    • Jairo Andrés Grajales Salinas hace 1 año

      Mira esté link (https://stackoverflow.com/questions/71167969/cant-generate-faker-image-in-laravel), ahí encuentras la respuesta