Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony2-在侧栏中设置标记云_Symfony_Tags_Doctrine_Posts - Fatal编程技术网

Symfony2-在侧栏中设置标记云

Symfony2-在侧栏中设置标记云,symfony,tags,doctrine,posts,Symfony,Tags,Doctrine,Posts,我想重新创建一个标签云边栏,你通常会在博客中看到,用户在标签上进行选择,它会显示所有带有特定标签的帖子 现在我很难确定如何设置查询 我可以查询所有标签: $blogTags = $this->createQueryBuilder('b') ->select('b.tags') ->getQuery() ->getResult(); return $blogTags; 但是,我如何设置它,使其仅通过用户从侧边栏中的

我想重新创建一个标签云边栏,你通常会在博客中看到,用户在标签上进行选择,它会显示所有带有特定标签的帖子

现在我很难确定如何设置查询

我可以查询所有标签:

$blogTags = $this->createQueryBuilder('b')
        ->select('b.tags')
        ->getQuery()
        ->getResult();

    return $blogTags;
但是,我如何设置它,使其仅通过用户从侧边栏中的一组标记中选择的标记调出帖子

我有代码来存储标签并在侧边栏中对它们进行加权,我正在寻找下一步将标签链接到它们的特定帖子

格斯塔格斯

格塔格威茨


和你朋友的答案一样

您应该使用条令查询

PostRepository.php


希望这能帮助其他人在这方面花费越来越多的时间

public function getPostsByTags($tag)
{
    $query = $this->createQueryBuilder('b')
        ->where('b.tags like :tag')
        ->setParameter('tag', '%'.$tag.'%');

    return $query->getQuery()->getResult();
}

在tags表中存储一个计数器,然后您可以使用counterRight显示标签的流行程度。我有这个计数器,但我正在寻找下一步,在标签上选择,它会显示相应的帖子。
public function getTagWeights($tags)
{
    $tagWeights = array();
    if (empty($tags))
        return $tagWeights;

    foreach ($tags as $tag)
    {
        $tagWeights[$tag] = (isset($tagWeights[$tag])) ? $tagWeights[$tag] + 1 : 1;
    }
    // Shuffle the tags
    uksort($tagWeights, function() {
        return rand() > rand();
    });

    $max = max($tagWeights);

    // Max of 5 weights
    $multiplier = ($max > 5) ? 5 / $max : 1;
    foreach ($tagWeights as &$tag)
    {
        $tag = ceil($tag * $multiplier);
    }

    return $tagWeights;
}
public function findByTagName($tagName)
{
    $qb = $this->createQueryBuilder('post');
    $qb->select('post')
        ->join('post.tags', 'tag')
        ->where('tag.name LIKE ?', '%'.$tagName.'%');

    return $qb->getQuery()->getResult();
}
public function getPostsByTags($tag)
{
    $query = $this->createQueryBuilder('b')
        ->where('b.tags like :tag')
        ->setParameter('tag', '%'.$tag.'%');

    return $query->getQuery()->getResult();
}