【问题标题】:How to use Doctrine2 from Symfony2 in an existing future-Symfony application?如何在现有的未来 Symfony 应用程序中使用来自 Symfony2 的 Doctrine2?
【发布时间】:2015-08-11 07:20:50
【问题描述】:

我没有通过 Symfony 的文档和谷歌找到任何解决方案。我只找到有关从头开始应用程序的内容。

我有一个大型的自有框架应用程序,我想慢慢迁移到 Symfony2。我没有从头开始构建新应用程序的便利。 到目前为止,我将整个 symfony 文件夹克隆到我自己的框架应用程序的根文件夹中。 我通过直接实现 Doctrine 来使用它,而没有触及 Symfony,如下所示。

<?php
namespace QueryBuild\Helpers;

use Doctrine\ORM\Tools\Setup;
use Doctrine\ORM\EntityManager;

class Listing
{
protected $appConfig;
protected $doctrineEntityManager;

public function __construct(\cConfig $app_config)
{
    $this->setAppConfig($app_config);
    $this->setDoctrineEntityManager();
}

public function setAppConfig($app_config)
{
    $this->appConfig = $app_config;
}

public function setDoctrineEntityManager()
{
    $paths = array(
        $this->getAppConfig()->BasePath() . "/symfony/src/El/Entity/"
    );
    $isDevMode = true;

    // the connection configuration
    $dbParams = array(
        'driver' => 'sqlsrv', // pdo_sqlsrv for mssql
        'host' => $this->getAppConfig()->db->Host,
        'user' => $this->getAppConfig()->db->User,
        'password' => $this->getAppConfig()->db->Password,
        'dbname' => $this->getAppConfig()->db->Database
    );

    // 5th param on false, to NOT use the simple annotation reader. Otherwise annotations are going to be readed wrong. Can be due to server configurations.
    $config = Setup::createAnnotationMetadataConfiguration($paths, $isDevMode, null, null, false);
    $doctrineEntityManager = EntityManager::create($dbParams, $config);

    $this->doctrineEntityManager = $doctrineEntityManager;
}

public function getAppConfig()
{
    return $this->appConfig;
}

public function getDoctrineEntityManager()
{
    return $this->doctrineEntityManager;
}


}

不要对我的命名空间感到困惑,我的实际任务是创建一个查询构建功能。

现在我不想再通过将登录数据传递到 setDoctrineEntityManager() 来连接到数据库。 我已经在 /symfony/app/config/parameters.yml 中写了这些信息。 现在我的想法是实例化 symfony 以便能够读取配置,以及如何从 symfony 到实例化学说。

我怎样才能做到这一点? 非常感谢您的建议。

【问题讨论】:

  • 您如何将 symfony 与您的应用程序一起使用?即:你是如何引导 symfony 的?仅“复制”文件不会发生任何事情。
  • 嗨,这是问题所在,Symfony 尚未在我的应用程序中使用/实现/实例化/引导。我如何才能做到这一点,然后我怎样才能获得登录的学说实例?
  • 有很多不同的方法,你必须问另一个问题。首先请参阅幻灯片 19 后的 slideshare.net/fabrice.bernhard/…
  • 好的,我会检查链接,谢谢。

标签: symfony frameworks doctrine


【解决方案1】:

最后我的解决方案与我之前的想法相反。 Symfony2 现在是包装基础应用程序,而遗留应用程序(目前)被封装为 LegacyBundle。现在我可以通过例如Entity-Manager 甚至是旧版应用程序的 Controller-Container。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-15
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-30
    • 2011-11-13
    • 2018-09-22
    相关资源
    最近更新 更多