現在ZendFramework1(ZF1)で実行されているアプリケーションをZendFramework2(ZF2)にアップグレードしています。ZF2接続からDB結果を返すのに問題があります。
ZF1では、このテストは完全に機能します。
$db = Zend_Db::factory('Pdo_Mssql', array(
'host' => 'ServerNameFromFreeTdsConfig',
'charset' => 'UTF-8',
'username' => 'myUsername',
'password' => 'myPassword',
'dbname' => 'database_name',
'pdoType' => 'dblib'
));
$stmt = $db->prepare("select * from Products");
$stmt->execute();
$result = $stmt->fetchAll();
$stmt->closeCursor();
しかし、私はこれをZF2で試してきましたが、実際にはどこにも到達していません。私のconfig\autoload \ global.phpには、次のものがあります。
return array(
'db' => array(
'host' => 'ServerNameFromFreeTdsConfig',
'charset' => 'UTF-8',
'dbname' => 'database_name',
'username' => 'myUsername',
'password' => 'myPassword',
'driver' => 'pdo',
'pdodriver' => 'dblib',
),
);
そして、Module.phpファイルで:
public function onBootstrap(MvcEvent $e)
{
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$config = $e->getApplication()->getServiceManager()->get('Configuration');
$dbAdapter = new Adapter($config['db'], new SqlServer());
GlobalAdapterFeature::setStaticAdapter($dbAdapter);
}
次に、Model\Products.phpで
class Products extends AbstractTableGateway
{
protected $table;
protected $featureSet;
public function __construct($table = 'Products') {
$this->table = $table;
$this->featureSet = new FeatureSet();
$this->featureSet->addFeature(new GlobalAdapterFeature());
$this->initialize();
}
//Test the connection.
public function getProducts() {
$result = $this->getAdapter()->query("select * from Products", Adapter::QUERY_MODE_EXECUTE);
die(var_dump($result));
}
}
上記の「var_dump」は正しい["fieldCount":protected] => int(7)を返すため、接続しているように見えます(このテーブルには7つの列があります)。ただし、結果は返されません。これをZF2で機能させるには、何をする必要がありますか?ZF1Zend_Db_Adapter_Pdo_Mssql.phpファイルのコードを使用してZend\Db \ Adapter \ Adapterを拡張する必要がありますか?または、私が見逃している簡単な解決策はありますか?
洞察をありがとう。