【发布时间】:2015-07-17 09:33:14
【问题描述】:
如何在 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 引用。
【问题讨论】:
-
你安装正确了吗? SO Link | samsonasik
-
是的,与 SQL Server 的连接有效。可以执行其他语句。问题只是 ZF2 将“偏移”和“限制”转换为例如 MySQL 语句,而不是如上所述的 SQL 服务器语句。
-
您能否提供从
select到某种getResult的配置和整个查询 -
我更新了描述
-
您的适配器是哪个实例?
get_class($tableGateway->getAdapter())
标签: sql-server zend-framework2 limit offset