在项目中首次使用原则,而且我在查询生成器中遇到了一些问题。symfony2中的学说Querybuilder问题。使用问题
首先亮相,在控制器我用下面的:
$conn = $this->get('database_connection');
$users = $conn->fetchAll('SELECT * FROM Users');
这工作得很好,并从我的数据库返回用户的数组。
然后我试图使用查询生成器来获取所有用户的名字。通过查看例子,我发现以下几点:
$conn = $this->get('database_connection');
$qb = $conn->createQueryBuilder();
$qb->select("forename")
->from("Users", "u")
->where("u.id = :user_id")
->setParameter('user_id', 1);
$query = $qb->getQuery();
$results = $query->getResults();
我得到告知,gDoctrine \ DBAL \查询\ QueryBuilder的:: getQuery()方法没有定义,我发现奇怪的是,几乎所有的例子,我发现使用它。
我做了一个搜索,发现Doctrine documentation,但我现在很困惑如何使用它。
有人会友好给我一个如何使用上述检索名为id为1的用户名的例子。我敢肯定,一旦我有一个简单的例子工作,我会很好从那里。
谢谢!
现在已经得到解决: 看文件后(与别人的帮助),我发现了QueryBuilder的总体布局如下:
$conn = $this->get('database_connection');
$qb = $conn->createQueryBuilder();
$stmt = $qb->select("forename")
->from("Users", "u")
->where("u.id = :user_id")
->setParameter('user_id', 1)
->execute();
$userNames = $stmt->fetchAll();
一般的想法是,execute方法返回一个Doctrine \ DBAL \ Driver \ Statement,并按照指定设置参数。从这个声明中,你可以调用here的各种方法之一来获得数据库的结果。
希望这可以帮助有问题的其他人!
谢谢!是的,我认为我的大脑中有Zend_Db,并且有一半人期望它的行为方式相同。你在上面提到的实现与Doctrine的ORM方面(我正在另一个项目中使用)有很大关系。然而,在这个项目中,所有的模型和映射器都已到位,所以我只想使用DBAL。当我没有实体时(参见Doctrine的意义),引用实体管理器似乎很奇怪,所以只是想通过数据库连接来使用它。只是个人喜好。我到最后去了(见编辑的问题)。谢谢! – steveYeah 2012-02-13 16:30:37