2016-03-01 5 views
0

Что случилось с моим dbAdapter? Я просматриваю это tutorial, но я не могу подключиться к серверу базы данных.Нет подключения к базе данных

Вот некоторые фрагменты кода:

module.php

use Zend\ModuleManager\ModuleManager; 
use Zend\Mvc\MvcEvent; 
use Acl\Model\Roles; 
use Acl\Model\RolesTable; 
use Zend\Db\ResultSet\ResultSet; 
use Zend\Db\TableGateway\TableGateway; 

... 

    public function getServiceConfig() 
    { 
     return array(
      'factories' => array(
       'Acl\Model\RolesTable' => function ($sm) { 
        $tableGateway = $sm->get('RolesTableGateway'); 
        $table = new RolesTable($tableGateway); 
        return $table; 
       }, 
       'RolesTableGateway' => function ($sm) { 
        $dbAdapter = $sm->get('Zend\Db\Adapter\Adapter'); 
        $resultSetPrototype = new ResultSet(); 
        $resultSetPrototype->setArrayObjectPrototype(new Roles()); 
        return new TableGateway('acl_roles', $dbAdapter, null, $resultSetPrototype); 
       } 
      ) 
     ); 
    } 

global.php

return array(
    'db' => array(
     'driver' => 'Pdo', 
     'dsn' => 'mysql:dbname=mycms;host=localhost', 
     'driver_options' => array(
      PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'' 
     ) 
    ), 
    'service_manager' => array(
     'factories' => array(
      'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory' 
     ) 
    ) 
); 

Как вы можете видеть, я работаю с TableGateway. Если я создаю дамп, я могу видеть ключи от функции exchangeArray(), но нет значений. Если я удалю все соединение базы данных в global.php, ничего не изменится.

Само соединение является правильным, я могу взять данные и подключиться через mysql.

Любые идеи?

+0

Проверьте регистрацию ошибок, вы можете найти отзыв о самой проблеме. – Conti

ответ

0

Спасибо за ваши намеки. Ошибка не была зарегистрирована, и я создал нового пользователя в mysql с доступом с любого хоста - ничего ...

Я установлю новый скелет и скопирую & вставьте модуль «Альбом». Может быть, в моем коде есть опечатка.

Редактировать: Я понял! Вот мой класс контроллера, прежде чем я нашел свою ошибку. Свалка просто дает некоторые ключи без ожидавших значения:

class AclController extends AbstractActionController 
{ 

    protected $rolesTable; 

    public function getAcl() 
    { 
     $roles = $this->getRolesTable()->fetchAll(); 
     echo "<pre>"; var_dump($roles); 
    } 

    public function getRolesTable() 
    { 
     if (! $this->rolesTable) { 
      $sm = $this->getServiceLocator(); 
      $this->rolesTable = $sm->get('\Acl\Model\RolesTable'); 
     } 
     return $this->rolesTable; 
    } 

    public function setRolesTable($rolesTable) 
    { 
     $this->rolesTable = $rolesTable; 
    } 
} 

Я добавил Еогеасп и теперь может сбросить или повторить результаты:

public function getAcl() 
{ 
    $roles = $this->getRolesTable()->fetchAll(); 
    foreach($roles as $role) { 
     echo $role->role_id; 
     echo $role->role_name; 
     echo $role->role_parent; 
    }   
} 

Но я не понимаю, почему я могу» t сбрасывает весь объект.

Смежные вопросы