написать SQL-запрос в Zend Framework - PullRequest
0 голосов
/ 09 марта 2012

У меня проблема с написанием SQL-запроса в модели Zend Framework.

Я хочу написать собственный SQL-запрос в моделях Zend Framework.

Заранее спасибо.

1 Ответ

3 голосов
/ 09 марта 2012

Чтобы расширить ответ Брайана:)

Сначала вы должны создать «адаптер базы данных», который подключается к вашей базе данных.Каждое поддерживаемое ядро ​​базы данных имеет определенный класс адаптера.Ядро базы данных может быть MySQL, PostgreSQL..etc, вы можете найти все здесь: http://framework.zend.com/manual/en/zend.db.adapter.html

Например, вы можете создать специальный адаптер MySQL, например:

$dbAdapter = new Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => 'localhost',
    'username' => 'webuser',
    'password' => 'xxx',
    'dbname'   => 'test'
));

Тогда, если выесли у вас есть собственный SQL-запрос, например:

$sql = "SELECT * FROM users WHERE id > 23";   

, то вы можете использовать вышеуказанный объект $dbAdapter для выполнения этого собственного запроса, используя его функцию query():

$statement = $dbAdapter->query($sql);

Теперьпеременная $ Statement будет объектом Zend_Db_Statement .Если вы хотите увидеть результат этого запроса, вы можете использовать функцию fetch(), например:

while ($row = $statement->fetch()) {
    echo $row['username'];
}

Несмотря на простоту использования, это не лучший метод для использования вышеуказанного метода query (), посколькуэто не помогает продвигать независимые от базы данных запросы.Для написания запросов к базе данных вы можете использовать Zend_Db_Select.Но, конечно, иногда невозможно избежать использования собственных запросов.Здесь вы можете найти пример того, как вы можете написать эти запросы для большего количества дБ:
Zend_Db_Select порядок случайным образом, совместимый в mssql / mysql

На основе этого примера вы можете использовать разныезапросы на основе типа вашего адаптера ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...