1

有没有办法计算表中两个值之间的百分比并将其选择为列?我知道这是可能的,但我想知道在 ZF2 上下文中是否有可能。

我的 ZF2 应用程序中有一个选择,它从数据库(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);
4

1 回答 1

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')
    ;
});
于 2013-07-12T09:05:32.940 回答