我正在学习Symfony2并尝试连接到教义dbal。但是我遇到了一个到目前为止我无法解决的错误。
错误信息:
Catchable fatal error: Argument 1 passed to DoctrineDBALConnection::__construct() must be of the type array, none given, called in /Users/toma/Dev/api/app/cache/dev/appDevDebugProjectContainer.php on line 2313 and defined in /Users/tom/Dev/api/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php on line 192
这就是我称之为Doctrine/DBAL/Connection的地方:
<?php
namespace APITestTestDoctrineRepository;
use APITestBundleTestDoctrineDatabaseRepository;
use DoctrineDBALConnection;
use PsrLogLoggerInterface;
class TestRepo {
public $doctrine;
public function __construct(
DatabaseRepository $databaseRepository,
Connection $connection,
LoggerInterface $logger
){
$this->doctrine = $databaseRepository;
}
public function test()
{
$test = 'Hey';
return $test;
}
}
我已将此文件创建为服务,并将其注入到我要查询数据库的存储库中。我尝试谷歌这个问题,但不幸的是找不到答案。
服务.xml
<service id="api.dto.template.connection"
class="DoctrineDBALConnection">
</service>
<service id="api.dto.template.logger"
class="PsrLogLoggerInterface">
</service>
<service id="api.testdoctrine.database_repository"
class="ApiTestBundleTestDoctrineDatabaseRepository">
<argument type="service" id="japi.dto.template.connection" />
<argument type="service" id="api.dto.template.logger" />
</service>
<service id="api.testdoctrine.repository.test_repo"
class="APITestBundleTestDoctrineRepositoryTestRepo">
<argument type="service" id="api.testdoctrine.database_repository" />
</service>
我不知道
你想在那里做什么,但它对我来说没有任何逻辑。
Doctrine 2在Symfony 2 Standard Edition中开箱即用。您需要做的就是在parameters.yml
中添加连接参数
#app/config/parameters.yml
database_driver: pdo_mysql
database_host: 127.0.0.1
database_port: null
database_name: db_name
database_user: db_user
database_password: db_password
在控制器中,您可以像这样访问实体存储库:
$results = $em->getRepository('YourAppBundle:EntityName')->yourRepositoryMethod();
查看此信息以获取更多信息:http://symfony.com/doc/current/book/doctrine.html