什么是最好的方式(或者任何方式,因为我现在无法找出与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代码中完成,那么如何?
答案 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
存储静态缓存。