【问题标题】:zend retriving tag listzend 检索标签列表
【发布时间】:2010-11-15 11:10:30
【问题描述】:

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

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

我有 3 张桌子:

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

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

【问题讨论】:

  • 似乎更像是一个 SQL 问题。我重新标记了你的问题:)

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


【解决方案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);

【讨论】:

  • 我不确定getSelect 方法是否存在于表中,也许你的意思是select
  • @Juan 确实是这样,所以需要某种自动完成功能。现已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-15
  • 2017-05-13
  • 1970-01-01
相关资源
最近更新 更多