gpt4 book ai didi

php - 如何使用 symfony 1.4 从模板中获取 DQL 结果?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:59 25 4
gpt4 key购买 nike

我正在使用 symfony 1.4 和 Doctrine。我正在写一个关于一些酒吧/酒吧的应用程序,我有 4 个表:

  • 产品
  • 订单
  • 产品订单
  • 酒吧。

我想获取第一个酒吧(即 pubs.id = 1)中所有产品的订购时间。这就是我得到的,但我只能得到第一个产品 (products.id = 1) 的总和,我需要所有产品的总和,在这种情况下,我的数据库中有两种不同的产品。

产品订单表:

public function ordersGetCount(){

$q = Doctrine_Query::create()

->from('ProductOrder l')
->innerJoin('l.Order p ON l.id_order = p.id')
->select('SUM(l.amount) as units')
->andWhere('p.id_pub = 1')
->groupBy('l.id_product')
->orderBy('p.id');
return $q->execute();
}

这是我的 Action 类:

$this->resultCount= Doctrine_Core::getTable('productorder')->ordersGetCount();

这是我的模板:

 for($i=0; $i<2; $i++){

echo "<tr>";

echo "<td>".$resultCount[0]->getUnits()[$i]."</td>";//
echo "<td>1</td>";
echo "<td>1</td>";
echo "</tr>";


}

请需要帮助:)

最佳答案

我认为您的查询没有任何问题,但您应该看看如何显示结果。

echo  "<td>".$resultCount[0]->getUnits()[$i]."</td>";

首先,您始终指的是 $resultCount 数组中的第一个元素。其次,我不确定您是否可以为虚拟列使用 setter/getter (您没有使用映射到您的模型的列。

所以我会选择这样的东西:

  1. ordersGetCount 中我会使用

    return $q->fetchArray();

    这将返回一个数组数组,而不是一个对象数组,并允许您访问虚拟列 units

  2. 显示结果:

    <?php foreach ($resultCount as $row): ?>
    <tr>
    <td>
    <?php echo $row['units']; ?>
    </td>
    <td>1</td>
    <td>1</td>
    </tr>
    <?php endforeach ?>

编辑:

这很奇怪 ;) 您可以尝试以这种方式构建查询吗:(理论上它应该是相同的):

 $q = $this->createQuery('l')
->select('l.id_product, sum(l.amount) as units')
->innerJoin('l.Order')
->where('p.id_pub = 1')
->groupBy('l.id_product')
->orderBy('p.id');

关于php - 如何使用 symfony 1.4 从模板中获取 DQL 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16839916/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com