symfony2中的Doctrine 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\Query\QueryBuilder::getQuery()方法没有定义,我发现这很奇怪,因为我发现的几乎所有例子都使用它

我搜索了一下,找到了Doctrine文档,但现在我完全不知道如何使用它。

有人愿意给我一个例子,告诉我如何使用上面的内容来检索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,参数设置为指定值。通过该语句,您可以调用此处所述的各种方法之一,以从DB中获取结果。

希望这能帮助其他有问题的人!

我想您可能会对有关条令的文档以及将其与symfony一起使用感到有点困惑。从错误消息中,您将获得DBAL\Query\QueryBuilder。该对象没有getQuery方法。您应该能够使用execute方法来获得您想要的结果。

话虽如此,我做这件事的方式是通过用户实体的存储库类,或者我做

$em = $this->get('doctrine.orm.entity_manager');
$qb = $em->createQueryBuilder();

然后做你以前做的事。。。

最新更新