zend 检索标签列表

发布于 2024-10-02 11:19:18 字数 308 浏览 9 评论 0原文

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

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

我有 3 个表:

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

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

I have some problem with zend. Here it is. I'm going to make some kind of articles db, which containt some info. Every article is marked with 1 or more tags (like WordPress).

I have a controller (let it be index) and action (also index).
All I need is to get articles and tags, associated with it, when user goes to site/index/index.

I have 3 tables:

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

How can I read tags, associated with article?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很酷不放纵 2024-10-09 11:19:18

Zend 的 MVC 实际上并不包含模型,但是,快速入门指南概述了创建模型

最简单的方法(不一定是最好的方法)是在 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);

Zend's MVC doesn't actually include a model, however, the quickstart guide outlines creating a model.

The simplest way (not necessarily the best way), is to setup the connection in your application.ini, or setup the adapter like this (see the Zend_Db_Adapter docs):

$db = new Zend_Db_Adapter_Pdo_Mysql(array(
  'host'     => '127.0.0.1',
  'username' => 'webuser',
  'password' => 'xxxxxxxx',
  'dbname'   => 'test'
));

Then use SQL to select your data.

//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);

This is also taged for Zend_Db_Table, to use that to access the data, first setup a default adapter (or again, use application.ini):

Zend_Db_Table::setDefaultAdapter($dbAdapter);

Then get objects for you tables like this:

$ariclesTable = new Zend_Db_Table('articles');

To get all the articles:

$articles = $articlesTable->fetchAll();

To get an article's tags (little more complex here, using a Zend_Db_Table_Select as recommended):

$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);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文