0

ZF2 でデータベースに接続する場所、必要なデータをセットアップするための application.ini を作成する場所、またはモジュール -> ブートストラップ メソッドで見つけることができません。助けてください

4

3 に答える 3

6

他の人が指摘したように、次のようなものをconfig/autoload/global.phporに追加できますconfig/autoload/local.php

'db' => array(
    'driver' => 'Pdo',
    'dsn' => 'mysql:dbname=mydb;host=localhost',
    'username' => 'root',
    'password' => '',
    'driver_options' => array(
        PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
    ),
),

機密情報 (パスワードなど) をlocal.phpファイルに追加することをお勧めします。その理由は、このファイルはバージョン管理ソフトウェアによって無視されるべきであり、ファイルが原因で Zend Skeleton アプリケーションを使用している場合、デフォルトで Git によって無視されるため.gitignoreです。

接続を使用するには、サービス マネージャーからデータベース アダプターを取得します。たとえば、コントローラー アクションで次のことができます。

public function someAction() {
    $dbAdapter = $this->serviceLocator->get('Zend\Db\Adapter\Adapter');

    // Do something with the database adapter, e.g.:
    $dbAdapter->query('SELECT username FROM user WHERE id = ?', array(37));
}

このマニュアルは、データベース アダプタを使用してクエリを実行する方法について説明しています。おそらく を利用したいと思うでしょうZend\Db\Sql。上記は単なる例です。理想的には、コントローラー内で直接データベースにアクセス (つまり、データベース クエリを実行) しないことに注意してください。ただし、上記は単なる例です。これらの設計パターンのいずれかを使用している場合、データベース アダプターをデータ アクセス層(DAL) またはサービス層に挿入するのは非常に簡単です。

上で何が起こるかというと、Zend\Db\Adapter\AdapterServiceFactoryが呼び出されます。Zend\ServiceManager\FactoryInterfaceこれは、サービス マネージャーがチェックする をクラスが実装しているために発生します (詳細については、サービス マネージャーのソース コードを参照してください)。

Zend\Db\Adapter\AdapterServiceFactoryファクトリは、サービス マネージャーから構成をフェッチし、「db」キーを読み取ります。この構成 (最初のコード例に示すように) は、インスタンス化されたデータベース アダプタを構成するZend\Db\Adapter\Adapterコンストラクタに渡されます。

そのため、構成ファイルのキーの下でデータベース接続を構成し、サービス マネージャーからキーを使用してデータベース接続dbを取得するだけで、残りは自動的に行われます。Zend\Db\Adapter\Adapter

編集:

AdapterServiceFactory上記が機能するように、構成でが有効になっていることを確認してください。ZendSkeletonApplication を使用している場合は、以下を 内に追加しますconfig/autoload/global.php

return array(
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);
于 2013-03-31T01:06:28.107 に答える
2

設定する(global.phpなど):

'db' => array(
  'driver' => 'Pdo',
  'dsn'            => 'mysql:dbname=mydb;host=localhost',
  'username'       => 'mydb',
  'password'       => '',
  'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
  ),
于 2013-03-29T09:37:13.813 に答える
1

ディレクトリに移動します: you_application_folder/config/autoload/

global.php で

<?php
return array(
'db' => array(
  'driver' => 'Pdo',
  'dsn'            => 'mysql:dbname=mydb;host=localhost',
  'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
  ),
);

?>

in local.php // ここに重要なデータを保存します

<?php
return array(
'db' => array(
  'username'       => '*****',
  'password'       => '*****',
);

?>
于 2013-03-29T09:44:19.620 に答える