在带有SQL Server的ZF2中选择使用limit()

时间:2013-06-11 10:26:42

标签: sql zend-framework2

e:刚刚意识到这可能与SQL Server的事实有关。有人知道ZF2相当于SQL Server的LIMIT吗?

大家好,

一如既往地坚持使用ZF2。

我在类中有一个fetchAll()方法,用于从某个表中选择行。现在,该方法有效,但我似乎无法限制它。

这可行(并以正确的顺序返回行):

public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function(Select $select){
        $select->order('messageId ASC');
    });
    return $resultSet;
}

但根据我的理解,限制应该相当容易(和类似),所以我这样做(这不起作用):

public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function(Select $select){
        $select->limit(30);
    });
    return $resultSet;
}

现在不返回任何内容。我做错了什么?

2 个答案:

答案 0 :(得分:6)

使用offset()

public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function(Select $select){
        $select
            ->limit(30)
            ->offset(10);
    });
    return $resultSet;
}

答案 1 :(得分:4)

这似乎有效!

public function fetchAll()
{
    $resultSet = $this->tableGateway->select(function(Select $select){
        $select->quantifier('TOP 15 ')
            ->order('id ASC');
    });
    return $resultSet;
}

将是以下查询:

SELECT TOP 15 * FROM tablename ORDER BY id ASC