w_b_x
@w_b_x

Как использовать Doctrine вне Symfony?

Здравствуйте!
Есть проект на Symfony и есть отдельное php-приложение.
Хочется использовать общие Entity для взаимодействия с базой данных, но не помещать приложение в структуру Symfony. Как это реализовать правильно?

Php-приложение лежит в папке исходников
(полный путь _project_/src/worker/application.php).


Пробовал делать так:
require __DIR__.'/../../vendor/autoload.php';
use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;
use App\Entity\Account; // Подключаю объект account, который прекрасно работает из Symfony

$isDevMode = true;
$entitiesPaths = array(__DIR__.'/../Entity');
$dbParams = array(
    'dbname' => '_база_',
    'user' => '_логин_',
    'password' => '_пароль_',
    'host' => '127.0.0.1',
    'driver' => 'pdo_mysql',
);
$config = Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode);
$em = \Doctrine\ORM\EntityManager::create($dbParams, $config);
$id = 9; // для примера
$account = $em->getRepository(Account::class)->findOneBy([
'id'=>$id,
]);
var_dump($account);
//Дальше идёт код приложения


Но получаю ошибку:
Class "App\Entity\Account" is not a valid entity or mapped super class.

При этом App\Entity\Account сформирован с помощью php bin/console make:entity и работает хорошо из контроллеров symfony
  • Вопрос задан
  • 241 просмотр
Решения вопроса 1
padlyuck
@padlyuck
Setup::createAnnotationMetadataConfiguration($entitiesPaths, $isDevMode, null, null, false);
для доктрины до версии 3.0(в третьей версии вроде бы сделают по нормальному). Скорее всего проблема в том, что в проекте на Symfony вы в аннотациях пишете что-то вроде @ORM\Entity, а для этого чистой доктрине нужно подсунуть нормальны AnnotationReader, а не Simple который по дефолту создается.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Sanasol
@Sanasol
нельзя просто так взять и загуглить ошибку
  1. Создаете композер пакет с общими сущностями
  2. Подключаете в оба проекта
  3. ...
  4. Профит


Еще есть гит-подмодули, но это более костыльный вариант
https://git-scm.com/book/ru/v1/%D0%98%D0%BD%D1%81%...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы