Los fixtures o archivos con datos de prueba se utilizan en Symfony y muchas otras aplicaciones para generar datos ficticios con los que poder probar la aplicación. El bundle DoctrineFixturesBundle que integra la librería de fixtures de Doctrine en Symfony acaba de publicar su versión 3.1.0 e incluye una novedad muy interesante: la posibilidad de agrupar archivos de fixtures.
Esta nueva funcionalidad permite cargar uno o más archivos de fixtures pero no
todos, algo muy útil en las aplicaciones complejas que definen muchos
fixtures. Para ello, utiliza el método getGroups()
definido en la nueva
interfaz FixtureGroupInterface
:
// src/DataFixtures/UserFixtures.php
use Doctrine\Bundle\FixturesBundle\FixtureGroupInterface;
class UserFixtures extends Fixture implements FixtureGroupInterface
{
// ...
public static function getGroups(): array
{
return ['basicos', 'usuarios'];
}
}
Una vez definido el grupo o grupos al que pertenece cada clase, ya puedes
utilizar la opción --group
en el comando que carga los fixtures para cargar
solo los que pertenezcan al grupo indicado:
# solamente carga los fixtures marcados como 'basicos'
$ ./bin/console doctrine:fixtures:load --group=basicos
# puedes añadir más de una opción '--group' para cargar más de un grupo
$ ./bin/console doctrine:fixtures:load --group=basicos --group=usuarios
Para mejorar tu productividad, a cada clase de fixtures se le asigna
automáticamente un grupo que se llama como el nombre de la clase. Así que en el
anterior ejemplo, la clase también pertenece a un grupo llamado UserFixtures
.
De esta forma es sencillo cargar una única clase de fixtures:
$ php bin/console doctrine:fixtures:load --group=UserFixtures
La nueva versión del bundle también incluye otras mejoras menores y elimina el soporte para las versiones de PHP anteriores a 7.1, tal y como puedes leer en el changelog de DoctrineFixturesBundle 3.1.0.