P. *_*ski 5 php doctrine symfony
我正在尝试仅将 Doctrine DBAL 连接组件注册为 Symfony4 中的服务。
我不需要 symfony 提供的完整 DoctrineBundle,而只需要提供基本数据库抽象级别的部分。
现在我一直在想办法如何将作曲家下载的原始库实现为服务。
这是 Connection 类的创建方式,如官方文档所示:
<?php
$config = new \Doctrine\DBAL\Configuration();
//..
$connectionParams = array(
'dbname' => 'mydb',
'user' => 'user',
'password' => 'secret',
'host' => 'localhost',
'driver' => 'pdo_mysql',
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connectionParams, $config);
Run Code Online (Sandbox Code Playgroud)
如果可以的话,如何在service.yml配置中配置这种类型的服务?
如果不是,我该怎么办?
您最好只使用主义包并从配置文件中删除 orm 部分。并不会真正增加太多开销,而且比自己做更容易。
话虽如此,这里是最小 dbal 设置的详细信息
composer create symfony/skeleton s40dbal
cd s40dbal
composer require server
composer require doctrine/dbal
# .env
DB_URL=mysql://user:password@localhost/dbname
# config/services.yaml
Doctrine\DBAL\Configuration:
Doctrine\DBAL\Connection:
factory: 'Doctrine\DBAL\DriverManager::getConnection'
arguments:
-
url : '%env(DB_URL)%'
driverOptions: {20: false} # emulate prepared statements
- '@Doctrine\DBAL\Configuration'
# DefaultController.php
use Doctrine\DBAL\Connection;
class DefaultController
{
public function index(Connection $conn)
{
$stmt = $conn->prepare('SELECT id,name FROM users WHERE username = ?');
$stmt->execute(['someuser']);
$row = $stmt->fetch();
var_dump($row);
return new Response('dbal');
}
}
Run Code Online (Sandbox Code Playgroud)
享受
| 归档时间: |
|
| 查看次数: |
4260 次 |
| 最近记录: |