2010-11-15 79 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