Привет.
Есть функции -
public function getArticles(){
// $articleResult = $this->pdo->query("SELECT * FROM `articles` ORDER BY `id` DESC");
$articleResult = $this->pdo->query(
"SELECT s.id, s.title, s.text, s.date, GROUP_CONCAT(t.name) AS tags, GROUP_CONCAT(t.id) AS tagsId, GROUP_CONCAT(t.alias) AS alias
FROM articles AS s
LEFT JOIN articleTags AS aT on s.id = aT.articleID
LEFT JOIN tags AS t ON aT.tagID = t.id
GROUP BY s.id"
);)
$articles = $articleResult->fetchAll(PDO::FETCH_ASSOC);
foreach($articles as $k => $v){
$articles[$k]['a_tags'] = self::buildTags2($v['tagsId'], $v['alias'], $v['tags']);
}
return $articles;
}
static function buildTags2($keys, $aliases, $tags){
$result = array();
if(!empty($keys)){
$keys = explode(',', $keys);
$aliases = explode(',', $aliases);
$tags = explode(',', $tags);
foreach ($keys as $k => $v){
$result[$v] = array(
'alias' => $aliases[$k],
'tag' => $tags[$k],
);
}
}
return $result;
}
Эти функции привязывают к статьям теги, через промежуточную таблицу.
Вопрос - как лучше сделать запрос после перехода на статью? Что бы теги были видны? Добавить параметр в getArticles($id) потом что то типа
getArticles($id){
$where = "WHERE `id` = ".$id;
$articleResult = $this->pdo->query("SELECT ... FROM articles $where ...
}
Или лучше создать новый метод?