Zend Framework - Запросы в контроллере - PullRequest
0 голосов
/ 16 февраля 2012

У меня есть следующий код в "IndexController.php":

$sql = 'SELECT * FROM ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
$this->view->projects = $stmt->execute(array('projects'));

..., который просто используется для извлечения всех объектов проекта из базы данных и передачи их в представление.Однако, когда я запускаю этот код, я получаю следующую ошибку:

Notice: Undefined variable: db in C:\wamp\www\PROJECTS_Zend\projectManager\application\controllers\IndexController.php on line 19

Fatal error: Call to a member function quoteIdentifier() on a non-object in C:\wamp\www\PROJECTS_Zend\projectManager\library\Zend\library\Zend\Db\Statement.php on line 181

Я не уверен, что такое переменная db или какой она должна быть, но если у вас есть какая-либо информация по этому вопросу, я был бы радмог бы просветить меня.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2012

Запросы в средах MVC, таких как Zend, Kohana и Codeigniter, должны выполняться в классе «Model».

Не класс контроллера!

Классы моделей обрабатывают данные из хранилища данных, такие как база данных или файл.

Вы должны сделать это в классе Model, поскольку он будет иметьвсе функциональные возможности, расширенные из класса Zend_db

$ db - это ваша переменная, которая содержит все ваши данные для подключения к вашей базе данных (имя хоста, имя пользователя, пароль, имя базы данных)

Вы должны определить эторанее в вашем коде

Еще одна вещь о MVC

  • Вы должны иметь МОДЕЛИ FAT , которые обрабатывают много данных.
  • Вы должны иметь Параноидальные контроллеры , которые управляют всеми процессами
  • Вы должны иметь DUMB Views , которые не могут сделать ничего важного!

Надеюсь, это поможет:)

1 голос
/ 16 февраля 2012

Ну, таким образом, вы разрушаете всю концепцию M (odel) MVC.

В любом случае $ db является экземпляром Zend_Db. Я бы посоветовал вам прочитать http://framework.zend.com/manual/en/zend.db.adapter.html.

Хотя это может привести к ужасному коду:

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...