farenholz/pdo-database-bundle

此包已被弃用且不再维护。未建议替代包。

Symfony3 扩展,提供 PDO 连接而不使用 doctrine

安装: 14

依赖: 0

建议者: 0

安全: 0

类型:symfony-bundle

0.0.2 2018-01-02 14:28 UTC

This package is auto-updated.

Last update: 2022-02-01 13:11:39 UTC


README

用途

Doctrine 很棒。这是事实。但对于某些用例,例如当您尝试连接到某种大型、现有的数据库时,Doctrine 生成巨大的开销。在这些情况下,仅使用某种类型的 PDO 连接可能很有用,这正是此包的作用。

主要特性

  • 通过 PDO 连接到 mysql、sqlite 或 sybase 数据库
  • 选择使用预处理语句或直接执行查询
  • 将查询及其执行时间记录到 symfony 分析器中

没有实体,没有仓库。这只是一个连接。

安装

composer require fahrenholz/pdo-database-bundle

配置

sybase:
    driver:       "dblib"
    host:         "~"
    port:         2000
    dbname:       "~"
    user:         "~"
    password:     "~"
    charset:      UTF8
mysql:
    driver:       "mysql"
    host:         "~"
    port:         3306
    dbname:       "~"
    user:         "~"
    password:     "~"
    charset:      UTF8
sqlite:
    driver:       "sqlite"
    path:         "/path/to/my/db.sqlite"
    user:         ""
    password:     ""

使用


$connection = $this->get('fahrenholz_pdo_database.connections')->get('mysql');
$mySQL = "SELECT * FROM my_table WHERE parameter1 = :parameter1 AND parameter2 = :parameter2";
//build and execute prepared statement
$result = $connection->execute(
    $mySQL,
    [
        ":parameter1" => $myParameter,
        ":parameter2" => $myParameterTwo,
    ]
);

//execute query without prepared statements
$result = $connection->executeSimple(
    $mySQL,
    [
        ":parameter1" => $myParameter,
        ":parameter2" => $myParameterTwo,
    ]
);


//get all results as objects
$allRows = $result->getAll(Collection::GET_OBJ);
//get all results as sequential arrays
$allRows = $result->getAll(Collection::GET_ARRAY);
//get all results as associative arrays
$allRows = $result->getAll(Collection::GET_ASSOC);

//reset counter
$result->resetCounter();

//execute something on each result
for ($i=0; $i<$result->getRowCount();$i++) {
    $res = $result->get(Collection::GET_OBJ);
    //do something
}

//get the SQL generated for a query
$connection->getSQL(
    $mySQL, 
    [
        ":parameter1" => $myParameter,
        ":parameter2" => $myParameterTwo,
    ]
);

测试

MySQL 连接性和 SQLite 连接性以及所有通用类都通过单元测试进行了良好覆盖。

composer install
./vendor/bin/codecept run

sybase 连接性也得到了良好测试,但针对的是无法通过公共 gitlab 账户公开的专有数据库。您必须相信我或创建自己的测试。每个新的连接都必须通过实现 ConnectionTestInterface 的连接测试类进行测试,以确保一致性。

贡献

请随时贡献。以下仍为待办事项

  • pgsql 连接性
  • mssql 连接性
  • oracle 连接性