开发者

zend retriving tag list

I have some problem with zend. Here it is. I'm going to make some kind of ar开发者_运维技巧ticles 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?


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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜