我正在学习Symfony2(和面向对象编程),想要创建一个在整个应用程序中都可用的服务。这个服务接收一个值foo,将其与数据库表进行比较,并返回一个值bar。
我有一个小类。
我有一个小类。
namespace Acme\TestBundle\Toolbox;
class StringToolbox
{
public function lookupSomething($foo)
{
$conn = $this->get('database_connection');
$sql = "SELECT bar FROM bar_list WHERE foo = :foo";
$stmt = $conn->prepare($sql);
$stmt->bindValue("foo", $foo);
$stmt->execute();
return $bar;
}
}
我的设置如下:
services:
toolbox:
class: Acme\TestBundle\Toolbox
arguments: [@database_connection]
但是它会抛出一个错误,说get()方法未定义。 我卡住了 - 如何在服务中使用DBAL? 谢谢!
@doctrine.dbal.connection
服务是一个抽象层。尝试使用@doctrine.dbal.%connection_name%_connection
,其中%connection_name%
是您要注入的连接名称的占位符。 - Igor TimoshenkoclientA
、clientG
和clientX
。我可以在parameters.yml文件中定义变量,比如说my_service_connection: clientA
。然而,在运行时,当我实例化我的服务时,从我的服务中如何知道/如何让它知道我想要连接到clientA
或clientX
或clientG
。 - Nis@doctrine
服务,它是一个http://www.doctrine-project.org/api/common/2.4/class-Doctrine.Common.Persistence.AbstractManagerRegistry.html的子类。请参考:https://github.com/doctrine/DoctrineBundle/blob/master/Resources/config/dbal.xml - catalin.costache