Entity/TagRepository.php
author ymh <ymh.work@gmail.com>
Thu, 17 Nov 2011 11:29:26 +0100
changeset 34 21fab44f46fe
parent 2 13f43f53d0ba
child 42 0e57c730bb18
permissions -rwxr-xr-x
add event on tag changed

<?php

namespace IRI\Bundle\WikiTagBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * TagRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class TagRepository extends EntityRepository
{
    public function getTagCloud($max_tags)
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        $qb->select('t.id', 't.label', 'COUNT( dt.id ) AS nb_docs');
        $qb->from('WikiTagBundle:Tag','t');
        $qb->leftJoin('t.documents', 'dt', 'WITH', 't = dt.tag');
        $qb->addGroupBy('t.id');
        $qb->addOrderBy('nb_docs','DESC');
        $qb->setMaxResults($max_tags);
        
        $query = $qb->getQuery();
        return $query->getResult();
    }
    
    public function getCompletion($seed)
    {
        $qb = $this->getEntityManager()->createQueryBuilder();
        $qb->select('t.label');
        $qb->from('WikiTagBundle:Tag','t');
        $qb->where($qb->expr()->orx(
            $qb->expr()->like('t.label',$qb->expr()->literal("%".addcslashes(mysql_real_escape_string($seed),"%_"))),
            $qb->expr()->like('t.label',$qb->expr()->literal("% ".addcslashes(mysql_real_escape_string($seed),"%_")."%"))
        ));
        
        $query = $qb->getQuery();
        
        return $query->getResult();
        
    }
}