zend retriving标签列表

时间:2010-11-15 11:10:30

标签: sql zend-framework join zend-db zend-db-table

我对zend有些问题。这里是。我要制作某种文章db,其中包含一些信息。每篇文章都标有1个或多个标签(如WordPress)。

我有一个控制器(让它成为索引)和动作(也是索引)。 我需要的是在用户访问网站/索引/索引时获取与之相关的文章和标签。

我有3张桌子:

articles(idarticles, title..)
tags(idtags, title)
tagList(idarticles, idtags).

如何阅读与文章相关的标签?​​

1 个答案:

答案 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);