我正在研究doctrine2以及如何处理数据夹具。我特别感兴趣的是从平面文件(csv,yaml,xls)中读取它们。
在doctrine 1.2中,数据夹具的处理方式如下:http://www.doctrine-project.org/projects/orm/1.2/docs/manual/data-fixtures/en#data-fixtures
有关如何在doctrine2中处理此问题的任何建议吗?
答案 0 :(得分:3)
官方教条git repo https://github.com/doctrine/data-fixtures
中有一个git子模块我目前正在使用它并且效果非常好。
答案 1 :(得分:3)
正如史蒂文已经提到的那样,灯具功能作为一个单独的回购。 我花了一些时间来弄清楚如何在Symfony2中安装数据夹具功能,所以我就是这样做的:
向您的deps文件添加来源:
[doctrine-fixtures] git=http://github.com/doctrine/data-fixtures.git [DoctrineFixturesBundle] git=http://github.com/symfony/DoctrineFixturesBundle.git target=/bundles/Symfony/Bundle/DoctrineFixturesBundle
更新供应商
$ php bin/vendors install
在autoload.php中注册:
$loader->registerNamespaces(array(
//...
'Doctrine\\Common\\DataFixtures' => __DIR__.'/../vendor/doctrine-fixtures/lib',
'Doctrine\\Common' => __DIR__.'/../vendor/doctrine-common/lib',
//..
));
添加子类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);
}
//...
通过控制台命令加载数据夹具
./app/console doctrine:data:load
答案 2 :(得分:1)
我使用基于类的夹具,这种方式更好,因为您可以直接使用EntityManager轻松处理关联和依赖关系,也可以在单元测试中使用。
这是带有Zend Framework模块的library I use,但您可以编写自己的加载器。还有command line script。