doctrine/data-fixtures
Doctrine Data Fixtures extension for Doctrine ORM/ODM. Provides a simple, structured way to define, manage, and execute data fixtures for loading seed/test data into your database, with tooling and docs to support fixture organization and execution.
doctrine/orm or doctrine/mongodb-odm). It aligns with Laravel’s dependency injection and service container patterns, especially when using DoctrineBundle (e.g., spatie/laravel-doctrine-orm).Booted events), integrating cleanly with Laravel’s lifecycle.doctrine/data-fixtures).config/packages/doctrine.yaml (if using DoctrineBundle).Doctrine\Common\DataFixtures\FixtureInterface.php artisan db:fixtures:load) for developer-friendly execution.DatabaseSeeder by leveraging Doctrine’s Executor for complex dependencies between fixtures.spatie/laravel-doctrine-orm) or full Doctrine migration.setReference()) may require rethinking Laravel’s simpler seeder patterns.laravel/seeds, this package lacks built-in Eloquent support, necessitating manual mapping between Doctrine entities and Eloquent models.OrderedFixtureInterface) vs. Laravel’s seeder priorities?ORMExecutor::PURGE_MODE vs. custom truncation).database:seed as a wrapper for fixture execution.// app/DataFixtures/UserFixtures.php
use Doctrine\Common\DataFixtures\FixtureInterface;
use Doctrine\Persistence\ObjectManager;
class UserFixtures implements FixtureInterface {
public function load(ObjectManager $manager) {
$user = new User();
$user->setEmail('test@example.com');
$manager->persist($user);
$manager->flush();
}
}
// app/Console/Commands/LoadFixtures.php
use Doctrine\Common\DataFixtures\Executor\ORMExecutor;
use Doctrine\Common\DataFixtures\Purger\ORMPurger;
class LoadFixtures extends Command {
protected $signature = 'db:fixtures:load';
public function handle() {
$executor = new ORMExecutor($this->getContainer()->get('doctrine')->getManager());
$executor->execute([new UserFixtures()], true);
}
}
doctrine:data-fixtures:load command.OrderedFixtureInterface for dependencies (e.g., UserFixtures before PostFixtures)..env).Executor::getOrder() to control load order (e.g., load() vs. loadAfter()).database/fixtures/) for reproducibility.v1.0-users) to manage fixture evolution.README.md (e.g., "PostFixtures requires UserFixtures").Purger to drop old data before updates.$executor->setLogger(new \Monolog\Logger('fixtures'));
$executor->execute([$fixture], true, ORMExecutor::PURGE_MODE);
loadAfter().UNIQUE constraints or ReferenceRepository to check existence.ORMExecutor::getLogger() to profile slow fixtures.Executor to process fixtures in batches.ParallelExecutor (Doctrine 2.5+) for multi-threaded loading.setReference() with tenant IDs.| Failure Scenario | Mitigation | Detection |
|---|---|---|
| Fixture execution fails | Wrap in transactions; use try-catch with rollback. |
Doctrine EntityManager exceptions. |
| Dependency missing | Validate references exist before loading. | ReferenceRepository::get() checks. |
| Database constraints violated | Use dry-run to validate schema first. |
SQL integrity |
How can I help you explore Laravel packages today?