Как работать с данными Doctrine2 (плоский файл) - PullRequest
5 голосов
/ 21 февраля 2011

Я смотрю на doctrine2 и как обращаться с данными.Мне особенно интересно читать их из плоских файлов (csv, yaml, xls).

В доктрине 1.2 данные обрабатываются следующим образом: http://www.doctrine -project.org / projects / orm / 1.2/ docs / manual / data-fixtures / en # data-fixtures

Любое предложение, как это сделать в doctrine2?

Ответы [ 3 ]

3 голосов
/ 04 марта 2011

Для этого в официальной доктрине git repo есть подмодуль git https://github.com/doctrine/data-fixtures

Я сейчас использую его, и он работает довольно хорошо.

3 голосов
/ 13 апреля 2011

Как уже упоминалось Стивеном, функция фикстуры поставляется в виде отдельного репо.Мне потребовалось некоторое время, чтобы понять, как установить функцию фиксации данных в 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
1 голос
/ 22 февраля 2011

Я использую фиксаторы на основе классов, гораздо лучше, потому что вы можете легко обрабатывать ассоциации и зависимости напрямую с EntityManager, также легко использовать в модульных тестах.

Вот библиотека , которую я использую с модулями Zend Framework, но вы можете просто написать свой собственный загрузчик.Существует также сценарий командной строки .

...