我对zend有些问题。这里是。我要制作某种文章db,其中包含一些信息。每篇文章都标有1个或多个标签(如WordPress)。
我有一个控制器(让它成为索引)和动作(也是索引)。 我需要的是在用户访问网站/索引/索引时获取与之相关的文章和标签。
我有3张桌子:
articles(idarticles, title..)
tags(idtags, title)
tagList(idarticles, idtags).
如何阅读与文章相关的标签?
答案 0 :(得分:1)
Zend的MVC实际上并不包含模型,quickstart guide outlines creating a model。
最简单的方法(不一定是最好的方法)是在application.ini
中设置连接,或者像这样设置适配器(请参阅Zend_Db_Adapter
文档):
$db = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => '127.0.0.1',
'username' => 'webuser',
'password' => 'xxxxxxxx',
'dbname' => 'test'
));
然后使用SQL选择您的数据。
//all articles
$articles = $db->query('SELECT * FROM articles');
//a article's tags
$tags = $db->query('SELECT * FROM tagList JOIN tags ON
(tagList.idtag = tags.idtags) WHERE idarticles = ?', $idarticles);
这也是Zend_Db_Table
的分页,要使用它来访问数据,首先设置默认适配器(或再次使用application.ini
):
Zend_Db_Table::setDefaultAdapter($dbAdapter);
然后为你的表获取对象:
$ariclesTable = new Zend_Db_Table('articles');
获取所有文章:
$articles = $articlesTable->fetchAll();
要获取文章的标签(这里稍微复杂一点,建议使用Zend_Db_Table_Select
):
$select = $tagsTable->select();
//3rd argument must be empty array, so no joined columns are selected
$select->join('tagList', 'tagList.idtag = tags.idtags', array());
$select->where('tagList.idarticles = ?', $idarticles);
$tags = tagsTable->fetchAll($select);