2010-11-15 43 views
1

我有一些zend的问题。这里是。我打算制作一些文章数据库,其中包含一些信息。每篇文章都标有1个或多个标签(如WordPress)。zend重复标记列表

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

我有3个表:

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

我怎么能读取标签,与文章相关的?

+0

似乎更多的是SQL的问题。我重申了你的问题:) – 2010-11-15 11:26:56

回答

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); 
+0

我不确定'getSelect'方法存在于表中,也许你的意思是'select'。 – Juan 2010-11-15 21:17:27

+0

@Juan的确,我是,所以需要某种自动完成。现在修复。 – 2010-11-16 01:09:35