dotkernel/dot-data-fixtures
最新稳定版本:1.5.0
Composer 安装命令:
composer require dotkernel/dot-data-fixtures
包简介
Provides a CLI interface for listing & executing doctrine data fixtures
README 文档
README
dot-data-fixtures provides a CLI interface for interacting with doctrine/data-fixtures.
dot-data-fixtures is a wrapper on top of doctrine/data-fixtures
Documentation
Documentation is available at: https://docs.dotkernel.org/dot-data-fixtures/.
Badges
This package provides a CLI interface for interacting with doctrine/data-fixtures.
Executing fixtures will append data to the tables.
Requirements
- PHP: 8.2, 8.3 or 8.4
- doctrine/orm: => 3.0
- doctrine/data-fixtures: => 2.0
Installation
Run the following command in your project directory
composer require dotkernel/dot-data-fixtures
Next, register the package's ConfigProvider into your application config.
\Dot\DataFixtures\ConfigProvider::class,
In doctrine.global.php (or your custom doctrine config file) add a new key fixtures, in the doctrine array, the value should be a valid path to a folder where your fixtures can be found.
Make sure the path is valid before proceeding to the next step.
Example
return [ 'dependencies' => [ ... ], 'doctrine' => [ ..., 'fixtures' => getcwd() . '/data/doctrine/fixtures', ], ];
The last step is to register the commands.
We can register the commands to work with the default CLI that doctrine provides us.
Create a new php file bin/doctrine (if you don't already have this file feel free to copy it from the below example)
<?php use Doctrine\ORM\Tools\Console\ConsoleRunner; use Doctrine\ORM\Tools\Console\EntityManagerProvider\SingleManagerProvider; require_once 'vendor/autoload.php'; $container = require getcwd() . '/config/container.php' ; $entityManager = $container->get(\Doctrine\ORM\EntityManager::class); $commands = [ $container->get(Dot\DataFixtures\Command\ExecuteFixturesCommand::class), $container->get(Dot\DataFixtures\Command\ListFixturesCommand::class), ]; ConsoleRunner::run( new SingleManagerProvider($entityManager), $commands );
Usage
List fixtures command: will list all the available fixtures, by order of execution.
php ./bin/doctrine fixtures:list
Execute fixtures command: this command will execute one or all fixtures.
To execute all the fixtures, run:
php ./bin/doctrine fixtures:execute
To execute a specific fixture, run:
php ./bin/doctrine fixtures:execute --class=RoleLoader
Creating fixtures
When creating a new fixture, we have two requirements:
- Fixtures should be created in the folder we configured earlier:
data/doctrine/fixtures - Fixtures should implement
FixtureInterfaceand have aloadmethod. - Create a new PHP file and copy the below code-block.
Example
<?php declare(strict_types=1); namespace Frontend\Fixtures; use Doctrine\Common\DataFixtures\FixtureInterface; use Doctrine\Persistence\ObjectManager; use Frontend\User\Entity\UserRole; class RoleLoader implements FixtureInterface { public function load(ObjectManager $manager): void { $adminRole = new UserRole(); $adminRole->setName('admin'); $userRole = new UserRole(); $userRole->setName('user'); $guestRole = new UserRole(); $guestRole->setName('guest'); $manager->persist($adminRole); $manager->persist($userRole); $manager->persist($guestRole); $manager->flush(); } }
Ordering fixtures
Fixtures can be ordered:
- by order
- by dependencies
Please refer to this link for further details on ordering fixtures:
统计信息
- 总下载量: 29.75k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 7
- 点击次数: 1
- 依赖项目数: 3
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2022-08-23