Zend Framework 2中的OFFSET和FETCH NEXT又称为SQL Server的LIMIT

时间:2015-07-17 09:33:15

标签: sql-server zend-framework2 limit offset

如何在Zf2逻辑中创建OFFSET和FETCH NEXT?结果应该类似于以下

    SELECT * FROM mytable
  ORDER BY id DESC
    OFFSET 100 ROWS
FETCH NEXT 10 ROWS ONLY

here所述。 使用以下代码时

$select = $this->tableGateway->getSql()->select();
$select->order('id DESC');
$select->offset(100);
$select->limit(10);
$resultSet = $this->tableGateway->selectWith($select);

然后输出

SELECT [mytable].* 
FROM  [mytable] 
ORDER BY [id] DESC 
LIMIT '10' OFFSET '100'

不适用于SQL Server。我需要的输出是上面的输出。

db.config.php中的配置如下所示

'db_sql_server' => array(
        'driver'    => 'pdo',
        'dsn'       => 'dblib:host=myhost;dbname=mydatabase',
        'username'  => 'myusername',
        'password'  => 'mypasswort',
),

我在这里为mysql配置'db'配置。 并在global.php

return array(
  'service_manager' => array(
    'factories' => array(
        /**
         * Adapter SQL Server
         */
        'Application\Db\AdapterSQLServer' => function($sm) {
            $config = $sm->get('Config');
            return new Adapter($config['db_sql_server']);
        },
    ),
  ),
)

我在Module.php中使用Table Gateway参考。

1 个答案:

答案 0 :(得分:0)

我相信你需要在' db_sql_server'中更改驱动程序名称。来自

的配置数组
'driver' => 'pdo'

'driver' => 'sqlsrv'