Zend Retriving список тегов - PullRequest
       13

Zend Retriving список тегов

1 голос
/ 15 ноября 2010

У меня есть некоторые проблемы с Zend. Вот. Я собираюсь сделать некоторые статьи БД, которые содержат некоторую информацию. Каждая статья помечена 1 или более тегами (например, WordPress).

У меня есть контроллер (пусть это будет индекс) и действие (также индекс). Все, что мне нужно, это получить статьи и теги, связанные с ним, когда пользователь заходит на сайт / индекс / индекс.

У меня есть 3 таблицы:

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

Как читать теги, связанные со статьей?

1 Ответ

1 голос
/ 15 ноября 2010

MVC Zend на самом деле не включает модель, однако в кратком руководстве по описано создание модели .

Самый простой способ (не обязательно лучший), это настроить соединение в вашем 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);
...