gpt4 book ai didi

php - 使用 symfony 3 注入(inject)服务中的 Doctrine dbal

转载 作者:行者123 更新时间:2023-12-02 22:18:08 26 4
gpt4 key购买 nike

我会尝试尽可能清楚地说明:我需要在我的存储库之一中使用 SQL。我在互联网上读到我必须使用 Doctrine 的 DBAL 才能使其工作。我在这里举了其中一个例子: How do you access Doctrine DBAL in a Symfony2 service class?或者那里http://inchoo.net/dev-talk/doctrine-dbal-with-symfony2/

这是我的存储库:

class myRepository
{
private $conn;

public function __construct(Connection $conn){
$this->conn = $conn;
}

public function getStuff(){
$sql = "SELECT * FROM stuff";
return $this->conn->fetchAll($sql);
}
}

问题出在构造函数中的 $conn 参数上。我正在尝试获取 DBAL\connection 对象并获取 EntityManager。

这是我的Bundle/Resources/config/services.yml

services:
my_repo:
class: MyBundle\Repository\MyRepository
arguments: ["@doctrine.dbal.default_connection"]

app/config.yml Doctrine 部分:

doctrine:
dbal:
default_connection: default
connections:
default:
driver: pdo_mysql
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8

最后,这是错误:

Catchable Fatal Error: Argument 1 passed to MyBundle\Repository\MyRepository::__construct() must be an instance of Doctrine\DBAL\Connection, instance of Doctrine\ORM\EntityManager given, called in D:\dev\php\MyProject\vendor\doctrine\orm\lib\Doctrine\ORM\Repository\DefaultRepositoryFactory.php on line 68 and defined 500 Internal Server Error - ContextErrorException

有人知道这个错误以及如何修复它吗?

注意:我已经尝试不在 app/config.yml 中命名我的连接,因为我想它应该保留用于多个连接。我还尝试使用“@database_connection”作为我的存储库构造函数的参数,在我的连接未命名时也尝试了“@doctrine.dbal”。

Nb2:如果需要,这是我的composer.json的一部分

"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",

最佳答案

好吧,我会回答自己:我不知道问题从何而来,知道这仍然很有趣,但设法以另一种(更简单的方式)方式做到这一点:

class MyRepo extends \Doctrine\ORM\EntityRepository
{

public function findAllServices(){
$sql = "SELECT * FROM stuff";
return $this->getEntityManager()->getConnection()->fetchAll($sql);
}
}

我认为我必须使用 DBAL,因为我认为这是使用普通旧 sql 请求进行查询的唯一方法...但事实并非如此。

关于php - 使用 symfony 3 注入(inject)服务中的 Doctrine dbal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35527200/

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