0

現在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を拡張する必要がありますか?または、私が見逃している簡単な解決策はありますか?

洞察をありがとう。

4

2 に答える 2

0

ユーザー名とパスワードを言う必要はないと思います

resources.db.adapter = "sqlsrv"
resources.db.host = "localhost\SQLEXPRESS"
resources.db.dbname = "DatabaseName"
resources.db.isDefaultTableAdapter = true 
resources.db.driver_options.ReturnDatesAsStrings = true
于 2013-02-07T18:46:03.003 に答える
0

結局、そこで作業していたZendFramework1アダプターから採用した独自のアダプターを作成することになりました。同じ問題の解決策を探している誰かがこの投稿に出くわし、私が転置したコードのコピーを希望する場合は、私に知らせてください。かなりたくさんのコードがあるか、ここに投稿します。

于 2013-02-14T17:38:15.970 に答える