3

在以下示例中,使用 Doctrine 和 Symfony2 使用 getResult() 方法返回的数组的格式是什么:

$query = $this->_em->createQuery('SELECT p.id, p.nameProduct FROM ArkiglassProductBundle:Product p');
        return $query->getResult();

我想知道如何访问每个案例并打印每一行。

4

3 回答 3

4
<?php
$query = $em->createQuery('SELECT u.username, u.name FROM CmsUser u');
$users = $query->getResults(); // array of CmsUser username and name values
echo $users[0]['username'];

取自学说文档

于 2013-05-30T14:49:24.943 回答
2

您是在询问 $users[0] 中的“0”吗?我希望我没有误解你的问题。getResults() 返回一个数据库结果数组。为数组命名后,您可以使用索引访问每个元素。当然,如果你想循环它,你可能会使用一个 foreach 循环,这样你就不必使用索引:

$products = $query->getResults();
foreach ($products as $product){
    echo $product->id.' '.$product->nameProduct;
}

这说......这个伪代码是为了解释。如果你使用 Symfony,你将不得不在视图文件中显示你的结果,可能像 Manuszep 在他的例子中那样使用 twig。在他的情况下,您将不得不像他一样使用 for in 循环。

于 2015-01-06T16:21:51.200 回答
2

查询返回一个用户数组:

array(
    0 => array(username => 'aaa', name => 'bbb'),
    1 => array(username => 'ccc', name => 'ddd')
)

所以 $users[0] 元素表示列表中的第一个用户。

您可以使用 for 循环进行迭代:

{% for user in users %}
    {{ user.username }} - {{ user.name }}
{% endfor %}
于 2013-05-31T08:02:06.683 回答