OFFSET и FETCH NEXT aka LIMIT для SQL Server в Zend Framework 2

77
7

Как я могу создать OFFSET и FETCH NEXT в логике Zf2? Результат должен выглядеть следующим образом:

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

как описано здесь. При использовании следующего кода

$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',
),

Я пропустил здесь конфигурацию 'db' для mysql. И в 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.

спросил(а) 2021-01-25T18:38:28+03:00 4 месяца, 4 недели назад
1
Решение
76

Я считаю, что вам нужно изменить имя драйвера в конфигурационном массиве 'db_sql_server' из

'driver' => 'pdo'

в

'driver' => 'sqlsrv'

ответил(а) 2021-01-25T18:38:28+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема