Как я могу использовать сущности из symfony2 в другом проекте, используя только doctrine2 - PullRequest
0 голосов
/ 20 января 2012

У сущностей в Symfony 2 есть теги доктрин, которым предшествует @ORM \ (например, @ORM \ Entity).

При использовании доктрины в качестве компонента она ожидает теги без ORM (например, @entity).

Если я хочу использовать эти сущности из проекта Symfony в другом проекте, который использует доктрину, но безSymfony это вызывает проблемы.

Как мне настроить проект non-symfony для использования этих классов с @ORM \ tags?

Ответы [ 3 ]

0 голосов
/ 25 января 2012

В данный момент я пошел на обходной путь, предложенный MadManMonty в комментариях ко мне:

Рассматривали ли вы использование другого метода отображения, такого как yaml или xml, для управления вместо аннотациикак это может обеспечить простую альтернативу для обхода проблемы?- MadManMonty

0 голосов
/ 12 апреля 2013

Я получил это так, установив для $ useSimpleAnnotationReader значение false в EntityManager :: create ():

// bootstrap.php
require_once "vendor/autoload.php";

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use Doctrine\Common\Annotations\AnnotationRegistry;

//IGNORE IF YOU DONT NEED SERIALIZER/VALIDATOR
AnnotationRegistry::registerAutoloadNamespace('JMS\Serializer\Annotation', $vendorPath . '/jms/serializer/src');
AnnotationRegistry::registerAutoloadNamespace('Symfony\Component\Validator\Constraint', $vendorPath . '/symfony/validator');
//IGNORE IF YOU DONT NEED SERIALIZER/VALIDATOR

AnnotationRegistry::registerFile($vendorPath . '/doctrine/orm/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');

$paths = array("/path/to/entities-or-mapping-files");
$isDevMode = false;

// the connection configuration
$dbParams = array(
    'driver'   => 'pdo_mysql',
    'user'     => 'root',
    'password' => '',
    'dbname'   => 'foo',
);

$config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode);
//LAST PARAMETER SETS $useSimpleAnnotationReader TO FALSE
$entityManager = EntityManager::create($dbParams, $config, null, null, false);
0 голосов
/ 21 января 2012

@ORM\ префикс не является специфическим для Symfony.Он находится в Doctrine Common docs: http://www.doctrine -project.org / docs / common / 2.2 / en / reference / annotations.html # ввод

Вы должны зарегистрировать свой файл аннотаций) с AnnotationRegistry::registerFile(), как описано в документации.Также проверьте файл app / autoload.php в Symfony.Он регистрирует свой автозагрузчик: в AnnotationRegistry

AnnotationRegistry::registerLoader(function($class) use ($loader) {
    $loader->loadClass($class);
    return class_exists($class, false);
});
AnnotationRegistry::registerFile(__DIR__.'/../vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/DoctrineAnnotations.php');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...