El verdadero rico no es el que tiene mucho dinero sino el que tiene tiempo para estar con la gente que quiere y hacer lo que le gusta.

Cargar datos de prueba con Faker en CakePHP 3

Cargar datos de prueba con Faker en CakePHP 3

Publicado el 25 enero, 2016 por | Categoría:

Un detalle muy importante durante el proceso de desarrollo de nuestra aplicación es ir probando cada uno de los módulos que lo conforman con una cierta cantidad de datos, entonces cargar datos de prueba a nuestras tablas de la base de datos se nos hace muy útil para probar de manera rápida y sencilla el funcionamiento de nuestra aplicación, esto implica probar por ejemplo filtros, paginación o finalmente probar el rendimiento de la aplicación frente a una gran cantidad de datos. Si bien podemos ir insertando registros uno por uno mediante una herramienta como phpMyAdmin o consultas SQL desde la linea de comandos, esto se puede convertir en algo caótico y tedioso si quisiéramos insertar decenas de datos y es allí donde entra en acción la librería Faker.

Faker es una librería PHP que nos ayuda a generar decenas de datos por nosotros, de esa manera lo único que tenemos que hacer es agregar la librería a nuestro proyecto y aplicar la gran cantidad de recursos que nos provee para generar tantos datos como sea necesario.

Durante esta lección aprenderemos a generar una gran cantidad de registros tanto para la tabla users como también para bookmarks de nuestra aplicación pocake, de tal forma obtendremos un cantidad considerable de datos para ir probando futuras funcionalidades del proyecto. Para la implementación de esta librería vamos apoyarnos bastante de las migraciones y la línea de comandos ya que por estos medios podremos generar una gran cantidad de datos de manera sencilla.

Sin más te dejo con el nuevo video donde te hablo de todo lo mencionado anteriormente y otras características más puestas a la práctica:

Actualización:

A partir de CakePHP 3.2 la implementación de Seeders es mucho mas sencilla y para reforzar esta lección he creado un tutorial completo que lo puedes ahora mismo siguiente este enlace.

Espero te haya sido útil esta lección, por favor no olvides compartirlo en tus redes sociales de esa manera este contenido pueda llegar a más personas 8-)

Sigue todas las lecciones del curso AQUÍ.

Saludos!!!

firma emm

 


Repositorio oficial

Por favor comparte esta lección:

¿Te gustó el artículo? ¡Suscríbete ahora mismo!

Recibe mis últimos artículos, recursos, tutoriales y mucho más.

, ,

Comentarios

  • Hola, no he podido usar el comando cake bake all desde el Koding, tienes algun tuto para esto?

    Gracias

    • Edson

      Qué problema te genera Nelson?

      • Edson gracias, estaba digitando mal la sentencia, solucionado mil gracias por su respuesta.

        • Edson

          Me alegra que lo hayas solucionado Nelson. Un saludo.

          • Muchas gracias por responder y por tan excelentes videos.

  • Abraham

    Muy profesional tu explicacion Edson, genial amigo.

    • Edson

      Gracias Abraham por tomarte el tiempo de comentar. Un gran saludo!

  • Hola Edson respecto a archivos .js es recomendable que esten dentro de cada carpeta de la vista o en el Webroot?

    De antemano muchas gracias

    • Edson

      Hola Nelson, te recomiendo que sea dentro de la carpeta webroot y la subcarpeta js si corresponde a los archivos Javascript, incluso dentro de esta carpeta puedes ir organizando el contenido de tus scripts en otras carpetas (por módulos por ejemplo) . Saludos!!!

      • ahh ok por ejemplo si voy a crear un js para users, la ruta de este archivo seria webroot/js/users/funciones.js ?

        Gracias..

        • Edson

          Exacto ! 8-)

  • Hola de nuevo, de casualidad has trabajado con datepicker? pues a mi a la hora de guardar en el campo tipo date me guarda una fecha totalmente errada.
    Gracias

    • Edson

      Hola Nelson, quiza no estas guardando correctamente formateada la fecha, lo que puedes probar es que al momento de enviar los datos desde datepicker revises como te está llegando al controlador, puedes hacerlo con la ayuda de la barra de depuración del framework o con el método debug : http://book.cakephp.org/3.0/en/development/debugging.html#basic-debugging . Saludos!

      • Hola pues tengo esto:
        Fecha de diligenciamiento

        $(“.fechas”).datepicker({ changeMonth: true, changeYear: true, yearRange: ‘-100:+0’, dateFormat: ‘yy-mm-dd’ });

        En el debug me sale esta fecha.
        date2169-12-02 00:00:00.

        Me estoy saltando algun paso?

        Mil gracias

  • Francisco Morales

    Hola Edson
    Recién ahora estoy mirando los videos de Cakephp3 que estas subiendo. Ya anteriormente he seguido todo el de CakePhp2, que estuvo buenísimo.
    En esta nueva versión de Cakephp, veo que han incorporado características que también tiene Laravel, por lo que me resultó super fácil asimilarlo.
    Nuevamente felicitarte por tu trabajo y espero que subas pronto los siguientes videos de este curso.

    Saludos

    • Edson

      Hola Francisco, es cierto lo que mencionas ya que si vienes de haber trabajado con frameworks como Laravel o Symfony se te hará mucho mas sencillo comprender como funciona CakePHP, de hecho si pensamos en algo en comun entre Laravel y CakePHP es que ambos utilizan componentes de Symfony lo cual da una buena señal de lo potente que puede llegar a ser trabajar con cualquier de estos frameworks. Saludos y gracias por comentar.

      • Samuel Vargas Arce

        Hola Edson muy buenos los tutoriales estoy siguiendo paso a paso todos los videos y hasta ahora todo genial…. porfavor publica el siguiente el video de cakephp3…. saludos desde la llajta :)

        • Edson

          Hola Samuel, estos días he estado trabajando en el curso de Symfony 2 pero ya pronto retomo también el curso de CakePHP 3, así que paciencia por favor. Saludos también desde Cocha 8-)

  • Thiago Da Costa Silva

    Gracias por el contenido de sus lecciones. Aquí en Brasil es difícil encontrar las clases tan rica en detalle, y una explicación simple para ser entendido.

    • Edson

      Hola Thiago, te agradezco a ti por tomarte el tiempo de comentar y sobre todo por valorar mi trabajo, es gratificante recibir este tipo de comentarios. Te mando un gran saludo!

  • Diego Cerezo

    Hola Edson, estoy siguiendo tus videos para aprender el framework cake, y
    estoy teniendo un problema con el faker. Sigo todos tus pasos, pero me
    arroja error al hacer la migracion. Entiendo que vos estas usando una
    versión anterior de cake, yo me baje la ultima (3.2) y no se si me esta
    faltando algo, o que, pero no puedo dar con la solución en internet.

    Al hacer el “cake migrations migrate” me dice lo siguiente:

    using migration path E:RepoWebscakeApp1configMigrations
    using seed path E:RepoWebscakeApp1configSeeds
    using environment default
    using adapter mysql
    using database firstcakeapp

    == 20160620211206 CreateAdminSeedMigration: migrating

    Fatal
    error: Class ‘FakerORMCakePHPPopulator’ not found in
    E:RepoWebscakeApp1configMigrations20160620211206_create_admin_seed_migration.php
    on line 12

    Call Stack:
    0.0007 122448 1. {main}() E:RepoWebscakeApp1bincake.php:0
    0.0647 3297616 2. CakeConsoleShellDispatcher::run() E:RepoWebscakeApp1bincake.php:33

    0.0917 3825456 3. CakeConsoleShellDispatcher->dispatch()
    E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShellDispatcher.php:127

    0.0917 3825536 4. CakeConsoleShellDispatcher->_dispatch()
    E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShellDispatcher.php:181

    0.0967 3871176 5.
    MigrationsShellMigrationsShell->runCommand()
    E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShellDispatcher.php:217

    0.0967 3871744 6. CakeConsoleShell->runCommand()
    E:RepoWebscakeApp1vendorcakephpmigrationssrcShellMigrationsShell.php:130

    0.1099 4002584 7.
    call_user_func_array:{E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShell.php:456}()
    E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShell.php:456

    0.1100 4002928 8. MigrationsShellMigrationsShell->main()
    E:RepoWebscakeApp1vendorcakephpcakephpsrcConsoleShell.php:456

    0.1664 5270928 9. SymfonyComponentConsoleApplication->run()
    E:RepoWebscakeApp1vendorcakephpmigrationssrcShellMigrationsShell.php:98

    0.1749 5451792 10.
    SymfonyComponentConsoleApplication->doRun()
    E:RepoWebscakeApp1vendorsymfonyconsoleApplication.php:117

    0.1756 5452256 11.
    SymfonyComponentConsoleApplication->doRunCommand()
    E:RepoWebscakeApp1vendorsymfonyconsoleApplication.php:186

    0.1757 5452536 12.
    SymfonyComponentConsoleCommandCommand->run()
    E:RepoWebscakeApp1vendorsymfonyconsoleApplication.php:815

    0.1800 5454584 13. MigrationsCommandMigrate->execute()
    E:RepoWebscakeApp1vendorsymfonyconsoleCommandCommand.php:256

    0.2249 5463808 14. MigrationsCommandMigrate->execute()
    E:RepoWebscakeApp1vendorcakephpmigrationssrcCommandMigrate.php:58

    0.2265 5464728 15. PhinxConsoleCommandMigrate->execute()
    E:RepoWebscakeApp1vendorcakephpmigrationssrcConfigurationTrait.php:165

    0.3209 6433392 16. PhinxMigrationManager->migrate()
    E:RepoWebscakeApp1vendorrobmorganphinxsrcPhinxConsoleCommandMigrate.php:113

    0.3478 6548976 17. PhinxMigrationManager->executeMigration()
    E:RepoWebscakeApp1vendorrobmorganphinxsrcPhinxMigrationManager.php:285

    0.3502 6549264 18.
    PhinxMigrationManagerEnvironment->executeMigration()
    E:RepoWebscakeApp1vendorrobmorganphinxsrcPhinxMigrationManager.php:309

    0.3512 6549720 19. CreateAdminSeedMigration->up()
    E:RepoWebscakeApp1vendorrobmorganphinxsrcPhinxMigrationManagerEnvironment.php:117

    Y no he podido solucionar el que no me encuentre la clase populator, la cual si la busco “a mano” se encuentra en:

    cakeApp1binvendorfzaninottofakersrcFakerORMCakePHPPopulator.php

    Me esta faltando algun paso?
    Desde ya muchas gracias, y saludos!

    • Edson

      Hola Diego, quizá te falta crear la instancia a la clase Populator dentro del método up() . Puedes apoyarte del repositorio que comparto al final de la lección. Saludos!

      $populator = new FakerORMCakePHPPopulator($faker);

      • Diego Cerezo

        Hola Edson, gracias por tu respuesta. Al final he podido dar con la solucion, y me parece acertado colaborar con otros que tengan el mismo problema acá para que los solucionen.

        Lo que tuve que agregar, es el require_once ‘vendor/autoload.php’; Esto lo hice por supuesto, debajo de las lineas de “use”

        Con esto pude utilizar el faker sin problemas, y entiendo que se deba a una actualizacion de cake 3.2 red velvet, ya que vos no has tenido que realizar este paso.

        Nuevamente gracias, y excelentes videos, hace años he querido aprender cake y nunca he encontrado el material adecuado para hacerlo, hasta que di con tus videos.

        • Edson

          Hola Diego, lo que pasa es que en la versión 3.1 aún no había una manera directa de generar registros y es por eso que lo hice tal como lo viste en la lección, ahora en la versión 3.2 incluso ya existe un directorio dedicado a los seeders. Voy a considerar hacer un tutorial extra con esta novedad para reforzar esta lección. Gracias por tu colaboración. Saludos!

  • Fernando Enrique Cueto

    Hola, excelente material y muchas gracias de antemano, hice la practica tal y como muestras en el video, para la tabla Users me funcionó perfectamente, pero al hacerlo para la tabla Bookmarks no inserta los datos a pesar de que no me muestra error en la consola.

    C:wamp64wwwpocakebin>cake migrations migrate

    Welcome to CakePHP v3.3.2 Console

    —————————————————————

    App : src

    Path: C:wamp64wwwpocakesrc

    PHP : 5.6.19

    —————————————————————

    using migration path C:wamp64wwwpocakeconfigMigrations

    using seed path C:wamp64wwwpocakeconfigSeeds

    using environment default

    using adapter mysql

    using database pocake

    All Done. Took 0.0158s

    using migration path C:wamp64wwwpocakeconfigMigrations

    using seed path C:wamp64wwwpocakeconfigSeeds

    Writing dump file C:wamp64wwwpocakeconfigMigrationsschema-dump-default.lock

    Dump file C:wamp64wwwpocakeconfigMigrationsschema-dump-default.lock was

    successfully written

    Que puede estar sucediendo???