2010-12-06 50 views
0

我是OOP和Zend的新手。到目前为止,我正在尝试建立一个数据库连接。我有这个在我的application.ini文件:新手:如何在zend框架上正确设置数据库连接?

resources.db.adapter = "PDO_MYSQL" 
resources.db.params.host = "localhost" 
resources.db.params.username = "root" 
resources.db.params.password = "" 
resources.db.params.dbname = "dbtest" 
resources.db.isDefaultTableAdapter = true 

按说我可以随处访问数据库适配器:

$db = Zend_Db_Table::getDefaultAdapter(); 

问题是最指南假设你自动知道在什么地方,但我老实说不知道。我在做什么,到目前为止,在我的index.php模型我有一个方法:

public function getPosts() 
{ 
$db = Zend_Db_Table::getDefaultAdapter(); 
$sql = "SELECT * FROM posts"; 
$result = $db->fetchAll($sql); 
return $result; 
} 

有了一个查询它会好起来的,但如果我想创建每次握住我的其他查询的详细方法我将不得不调用$ db = Zend_Db_Table :: getDefaultAdapter(),所以我确信我没有以有效的方式来完成这个任务。我已经尝试将它放置在各种__construct()和init()方法中,但它不起作用。我在哪里添加代码而不必每次都调用它?谢谢。

回答

3

一个简单的方法来运行您的查询将创建一个类为您的每个表扩展Zend_Db_Table_Abstract这将为您提供一些方便的方法来帮助你从你的数据库中获取你的东西。

在使用这种方法,你就可以通过

$postsTable = new Model_Db_Tables_Posts() // Assuming you put your class post in the folders models/db/tables/ 
$posts = $postsTable->fetchAll(); 

打电话给你的表格内容更具体的职位,你也可以通过ID使用

$singlePost = $postsTable->find(1); // Assuming the id of the post you want is 1 

获取它,然后创建新你可以去的条目

$data = array('title' => 'Some title', 'content' => 'Some Content') // where the key is the table field and the value is the value you want to insert 
$newId = $postsTable->insert($data); 

并用于更新

$data = array('title' => 'Some title', 'content' => 'Some Content') 
$db = $postsTable->getAdapter(); 
$where = $db->quoteInto('id = ?', $id); // quoteInto is used to escape unwanted chars in your query, not really usefull for integers, but still a good habit to have 
$postsTable->update($data, $where); 

希望这有助于你一点,你可以在http://framework.zend.com/manual/fr/zend.db.table.html发现在官方ZF文档的详细信息和http://framework.zend.com/manual/fr/zend.db.table.row.html

+0

于是实例化新类自动为你一个数据库连接?我在哪里可以保存我的类来扩展Zend_Db_Table_Abstract,对不起,在这一点上再次抱歉。 – Joker 2010-12-06 16:58:23