udo*_*udo 5 php zend-framework fixtures doctrine-orm
我正在研究doctrine2以及如何处理数据夹具.我特别感兴趣的是从平面文件(csv,yaml,xls)中读取它们.
在doctrine 1.2中,数据夹具的处理方式如下:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/data-fixtures/en#data-fixtures
有任何建议如何在doctrine2中处理这个问题?
正如史蒂文已经提到的,固定功能是作为一个单独的存储库提供的。我花了一些时间才弄清楚如何在 Symfony2 中安装数据装置功能,所以我是这样做的:
将源添加到您的 deps 文件中:
[教义固定装置]
git=http://github.com/doctrine/data-fixtures.git
[学说夹具捆绑包]
git=http://github.com/symfony/DoctrineFixturesBundle.git
目标=/bundles/Symfony/Bundle/DoctrineFixturesBundle
更新您的供应商
$ php bin/供应商安装
在autoload.php中注册:
$loader->registerNamespaces(array(
//...
'Doctrine\\Common\\DataFixtures' => __DIR__.'/../vendor/doctrine-fixtures/lib',
'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
//..
));
Run Code Online (Sandbox Code Playgroud)
添加属于 FixtureInterface 子类的类:
<?php
use Doctrine\ORM\EntityManager,
Doctrine\Common\DataFixtures\FixtureInterface;
/**
*
* setup of initial data for the unit- and functional tests
* @author stephan
*/
class LoadTestingData implements FixtureInterface{
/**
*
* @param EntityManager $manager
*/
public function load($manager) {
$user = new User();
$user->setUsername("testuser");
$manager->persist($user);
}
//...
Run Code Online (Sandbox Code Playgroud)
通过控制台命令加载数据装置
./app/console doctrine:data:load
Run Code Online (Sandbox Code Playgroud)