Попытка обернуться вокруг новых концепций Zend Framework 2.0.
Я пытаюсь подключиться к базе данных и получить это соединение в контроллере или модели. Ничего необычного, просто чистая связь для запуска запросов.
Итак, это мой текущий код:
//module.config.php return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=DBNAME;host=HOSTNAME, 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), 'username' => 'USERNAME', 'password' => 'PASSWORD', ), 'service_manager' => array( 'factories' => array( 'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory', 'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory', ), ), );
Что я делаю не так?
Создайте db.local.php в папке ./config/autoload и добавьте следующий контент.
return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=zenBlog;host=localhost', 'username' =>'root', 'password' =>'', 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'service_manager' => array( 'aliases' => array( 'db' => 'Zend\Db\Adapter\Adapter', ), ),);
в вашем контроллере $this->getServiceLocator()->get('db');
для доступа к базе данных.
Вот как выглядит мой local.php в config \ autoload \ local.php.
<?php return array( 'db' => array( 'driver' => 'Pdo', 'dsn' => 'mysql:dbname=<dbname>;host=localhost', 'username' => 'root', 'password' => <your password here>, 'driver_options' => array( PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' ), ), 'service_manager' => array( 'aliases' => array( 'adapter' => 'Zend\Db\Adapter\Adapter', ), ),);
Теперь используйте это для создания адаптера базы данных:
$adapter = $this->getServiceLocator()->get('adapter');
Создайте sql statetment и поставьте переменную $ sql. Теперь сделайте следующее:
$statement = $adapter->createStatement($sql); $result = $statement->execute();
Надеюсь это поможет.