将 Symfony2 与 PDO_odbc 一起使用,并使用服务和存储库进行连接和查询
Use Symfony2 with PDO_odbc and use services and repositories for connection and queries
对于我的公司,我正在开发一个需要从数据库中获取用户和企业的 Symfony 网络应用程序。
但是我被迫使用 ODBC 连接。我选择了 pdo_odbc,这在控制器中运行良好(连接、查询、获取、呈现)。
但是如果我无法使用 Doctrine 进行连接,我对如何使用 Entities 和 Repositories 有点迷茫。
所以我现在正在做的是连接到数据库、进行查询、获取数据并在一个控制器函数中呈现到视图。如果不使用 Entities 或 Repositories,这显然不是应该的。
如果您需要更多信息,请随时发表评论。
PS:我是 Symfony 的新手,所以非常感谢示例
我们在一些项目上做同样的事情。
我们完成了以下步骤:
编写存储库,但不使用 Doctrine ORM 和 QueryBuilder,我们只使用 PDO 连接和 PDO 语句。
我们创建模型而不是实体。每个模型都有一个 "setFromDb()" 函数来接收数据数组。这些信息将与模型的属性相匹配。
在服务、控制器中,我们只使用模型。
我们刚刚编写的存储库是 classes,它们被定义为服务,并将接收学说连接作为构造函数注入。然后你就可以获得连接并使用 PDO。
存储库示例 class(请注意,我们只称它们为存储库,因为它们处理数据库查询,但它们与来自 Symfony / Doctrine 的存储库 classes 无关)
class DemoRepositoryClass
{
private $connection;
public function __construct(Registry $doctrine)
{
// Get the database connection from doctrine
$this->connection = $doctrine->getConnection();
}
public function test()
{
$query = "SELECT * FROM XXX WHERE FOO = 'BAZ";
$stmt = $this->conncetion->prepare($query);
// [...] Do as always with PDO;
}
}
此 class 将在 services.yml
中定义为服务
app.demo_repository_class:
class: AppBundle\Path\DemoRepositoryClass
arguments: ['@doctrine']
public: true
这样,您可以从控制器调用服务功能,例如:
// In a controller action/function
$this->get('app.demo_repository_class')->test();
对于我的公司,我正在开发一个需要从数据库中获取用户和企业的 Symfony 网络应用程序。 但是我被迫使用 ODBC 连接。我选择了 pdo_odbc,这在控制器中运行良好(连接、查询、获取、呈现)。
但是如果我无法使用 Doctrine 进行连接,我对如何使用 Entities 和 Repositories 有点迷茫。
所以我现在正在做的是连接到数据库、进行查询、获取数据并在一个控制器函数中呈现到视图。如果不使用 Entities 或 Repositories,这显然不是应该的。
如果您需要更多信息,请随时发表评论。
PS:我是 Symfony 的新手,所以非常感谢示例
我们在一些项目上做同样的事情。
我们完成了以下步骤:
编写存储库,但不使用 Doctrine ORM 和 QueryBuilder,我们只使用 PDO 连接和 PDO 语句。
我们创建模型而不是实体。每个模型都有一个 "setFromDb()" 函数来接收数据数组。这些信息将与模型的属性相匹配。
在服务、控制器中,我们只使用模型。
我们刚刚编写的存储库是 classes,它们被定义为服务,并将接收学说连接作为构造函数注入。然后你就可以获得连接并使用 PDO。
存储库示例 class(请注意,我们只称它们为存储库,因为它们处理数据库查询,但它们与来自 Symfony / Doctrine 的存储库 classes 无关)
class DemoRepositoryClass
{
private $connection;
public function __construct(Registry $doctrine)
{
// Get the database connection from doctrine
$this->connection = $doctrine->getConnection();
}
public function test()
{
$query = "SELECT * FROM XXX WHERE FOO = 'BAZ";
$stmt = $this->conncetion->prepare($query);
// [...] Do as always with PDO;
}
}
此 class 将在 services.yml
中定义为服务app.demo_repository_class:
class: AppBundle\Path\DemoRepositoryClass
arguments: ['@doctrine']
public: true
这样,您可以从控制器调用服务功能,例如:
// In a controller action/function
$this->get('app.demo_repository_class')->test();