我有一个网站,在那里我显示了一个书签列表,每个书签上都有多个标签,这是输出: Bookmark Title
Link
Description text
#tag1 #tag2 #tag3 #tag4 #tag5
Bookmark Title
Link
Description text
#tag3 #tag4
Bookmark Title
Link
Description text
#tag1
(…) 我有一个过滤器,我可以选择标签来隐藏/显示相应的书签。现在的问题是,当有一个带有相同标签的书签时,这些标签也会在过滤器中重复,比如: Filter: #tag1 #tag2 #tag3 #
我想选择包含特定标签的所有帖子。我尝试使用这个查询:
SELECT GROUP_CONCAT(t.tag_name) taglist
FROM posts p
JOIN posts_tags pt ON p.post_id = pt.post_id
JOIN tags t ON t.tag_id = pt.tag_id
WHERE (p.post_private = 0) AND t.tag_name = 'php'
GROUP BY p.post_id
问题是,上面的查询选择了所有包含php标签的帖子,但没有选择帖子可能包含的任何其他标签。如果没有AND t.tag_name
我在每个文件中都有具有相应功能的文章和标记模型:
Article.php:
public function tags()
{
return $this->belongsToMany('App\Tag')->withTimestamps();
}
Tag.php:
public function articles()
{
return $this->belongsToMany('App\Article');
}
在Blade视图上,我可以通过调用
@foreach($tag->
我有一个category.php页面,它显示给定类别($tagname)中的所有文章,其中enabled=1。当一篇文章只有一个标签(和两个空标签),那么一切都很好。文章将显示在此category.php页面上(启用时设置为1)。但是,如果至少填充了两个标签,那么文章将显示在category.php页面上,其中包含tag2=$tagname或if tag3=$tagname -无论enabled字段包含什么(1表示启用,2表示禁用)!
底线-为什么在该文章的enabled设置为2的情况下仍会显示出来?
SELECT *
FROM articles
WHERE enabled=1
AND t
因此,我试图在元素视图中获得一个查找表,并通过在标记控制器中创建一个助手函数来实现这一点。
<?php
class TagsController extends AppController {
var $name = 'Tags';
function gettags(){
if (!empty($this->params['requested'])) {
return $this->Tag->find('list', array('fields'=