2012-03-09 3 views
0

У меня возникла проблема с написанием SQL-запроса в модели рамки zend.написать sql-запрос в zend framework

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

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

+2

Whats УРС REQ. и что вы пробовали? – Teja

ответ

3

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

Во-первых, вы должны создать «адаптер базы данных», что подключается к базе данных. Каждый поддерживаемый движок базы данных имеет конкретный класс адаптера. Ядро базы данных может быть 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']; 
} 

Хотя его легко использовать, его не самый лучший метод, чтобы использовать описанный выше метод запроса(), потому что это не помогает для продвижения запросов, не зависящих от базы данных. Чтобы написать независимые запросы базы данных, вы можете использовать Zend_Db_Select. Но, конечно, иногда его не избежать использовать собственные запросы. Вы можете найти здесь пример того, как можно писать такие запросы для более дб двигателей:
Zend_Db_Select order by random, compatible in mssql/mysql

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

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