有没有办法计算表中两个值之间的百分比并选择它作为列?我知道这是可能的,但我想知道是否有可能在ZF2环境中具体。
我的ZF2应用程序中有一个select,它从db(SQL Server)中获取大量数据。此查询涉及我想按可用磁盘空间(表中的列)排序的表“库”。但我不希望它按可用空间的绝对数量排序,而是相对于总磁盘空间的百分比。
所以我的意思是
libraries.freeSpace / libraries.totalSpace as 'percentage'
但在ZF2选择范围内。这是当前的查询:
$resultSet = $this->tableGateway->select(function(Select $select) use($report){
$select->where('id = ' . $report[0]->customer)
->order('freeSpace', 'asc');
});
e:答案。
使用Zend \ Db \ Sql \ Expression模型。
在您的选择中添加列:
$select->columns(array(
'percentage' => new Expression('cast(libraries.freeSpace') as float / cast.('libraries.totalSpace') as float', false);
答案 0 :(得分:2)
您可以将表达式传递给Columns,不要忘记第二个参数,您需要将其设置为FALSE,以便在手动提供时自动为您添加表前缀。
use Zend\Db\Sql\Expression;
$resultSet = $this->tableGateway->select(function(Select $select) use($report){
$select->columns(array(
'percentage' => new Expression('libraries.freeSpace / libraries.totalSpace')
), FALSE)
->where('id = ' . $report[0]->customer)
->order('freeSpace', 'asc')
;
});