gpt4 book ai didi

php - 如何在 Symfony 4 中不使用 DoctrineBundle 将 DBAL Doctrine 连接注册为服务

转载 作者:可可西里 更新时间:2023-11-01 00:55:12 28 4
gpt4 key购买 nike


我正在尝试仅将 Doctrine DBAL Connection 组件注册为 Symfony4 中的服务。
我不需要 symfony 提供的完整 DoctrineBundle,只需要提供基本数据库抽象级别的部分。
现在我一直在研究如何将 composer 下载的原始库作为服务来实现。
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);

如果可以,如何在service.yml配置中配置这种类型的服务?
如果不是,我该如何进行?

最佳答案

您最好只使用 doctrine bundle 并从配置文件中删除 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');
}
}

享受

关于php - 如何在 Symfony 4 中不使用 DoctrineBundle 将 DBAL Doctrine 连接注册为服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47620275/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com