如何在Phalcon中获取子查询列

时间:2014-06-16 15:48:28

标签: phalcon

什么是最好的方式(或者任何方式,因为我现在无法找出与Phalcon模型混合的任何东西)从这样的查询中获取数据:

SELECT *, (select sum(l.log_volume) from logs l where l.parcel_id = p.parcel_id) as parcel_total_volume 
FROM PARCELS p

我想要的是基本上可以从模型中轻松访问计算字段,最好在sql端计算并随每条记录获取。

如果必须在模型php代码中完成,那么如何?

1 个答案:

答案 0 :(得分:3)

我会选择这样的事情:

<?php

class Parcels extends Phalcon\Mvc\Model
{
    private static $sumsCache = [];

    /*
       ...
    */

   public function getTotalVolume()
   {
        if(!isset($sumsCache[$this->parcel_id])) {
            $sumsCache[$this->parcel_id] = Logs::sum("parcel_id = $this->parcel_id");
        }

        return $sumsCache[$this->parcel_id];
   }
}

通过这种方式,您可以获取总和JIT,并为每个parcel_id存储静态缓存。