2015-07-19 63 views
1

我有兩個實體郵政和標籤這個實體有關係ManyToMany,許多職位有很多標籤和許多標籤有很多職位,並有實體類別我很多職位的一個類別,我需要創建行動查找職位類別和發現後的標籤如何查找實體ManyToMany

class Tag 
{ 
/** 
* @ORM\Column(type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
protected $id; 

/** 
* @ORM\Column(type="string", length=100) 
*/ 
protected $hashTag; 

/** 
* @Gedmo\Slug(fields={"hashTag"}) 
* @ORM\Column(type="string", length=12) 
*/ 
protected $hashSlug; 

/** 
* @ORM\ManyToMany(targetEntity="Post", inversedBy="tag") 
* @ORM\JoinColumn(name="post_id", referencedColumnName="id") 
*/ 
protected $post; 

類別:

class Category 
{ 
/** 
* @ORM\Column(name="id", type="integer") 
* @ORM\Id 
* @ORM\GeneratedValue 
*/ 
private $id; 

/** 
* @ORM\Column(name="title", type="string", length=64) 
*/ 
private $title; 

/** 
* @ORM\OneToMany(targetEntity="Post", mappedBy="category") 
*/ 
protected $posts; 

class Post 
{ 
/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
private $id; 

/** 
* @ORM\Column(type="string", nullable=true) 
*/ 
private $title; 
    /** 
* @ORM\ManyToMany(targetEntity="Tag", mappedBy="post") 
* @ORM\JoinTable(name="posts_tag") 
*/ 
protected $tag; 

和我的模板我張貼在我的行動領域包括hashtag:

<p class="lead"> 
    Category:<a href="{{ path('get_posts_for_category', {'category': post.category.title}) }}">{{ post.category }}</a> 
    </p> 
{% for tags in post.tag %} 
    <a class="btn btn-primary" href="{{ path('get_posts_for_tags', {'tags': tags }) }}">{{ tags }} <span class="glyphicon glyphicon-chevron-right"></span></a> 
    {% endfor %} 


public function indexAction(Request $request, $tag) 
{ 
    $em = $this->getDoctrine()->getManager(); 

    $posts = $em->getRepository('PillsBundle:Post') 
     ->getPostByTag($tags); 

這到底是功能:

public function getPostByTag($tag) 
{ 
    $date = new \DateTime; 

    $qb = $this->getEntityManager()->createQueryBuilder('p'); 

    $qb 
     ->select('p') 
     ->from('PillsBundle:Post', 'p') 
     ->getQuery(); 

    $query = $qb->getQuery(); 
    $results = $query->getResult(); 
    //  dump($results);exit; => I have all posts 
    // And I dont know what to do next, help 
} 

和第一類:

public function indexAction(Request $request, $category) 
    { 
    $em = $this->getDoctrine()->getManager(); 

    $posts = $em->getRepository('PillsBundle:Post') 
     ->getPostByCategory($category); 
    public function getPostByCategory($category) 
{ 
    $date = new \DateTime; 

    $qb = $this->getEntityManager()->createQueryBuilder('p'); 

    $qb ->select('p') 
     ->from('PillsBundle:Post', 'p') 
     ->join('p.category', 'c') 
     ->where('c = :category') 
     ->setParameter('category', $category) 
     ->getQuery(); 

    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

    return $results; 
} 

如果我用這個QueryBuilder的我張貼(現在我張貼categoty.slug)這個功能需要? 幫助請

回答

0

你必須標記傳遞到查詢,以便...

public function getPostByTag($tag) 
{ 
    $date = new \DateTime; 

    $qb = $this->getEntityManager()->createQueryBuilder('p'); 

    $qb 
     ->select('p') 
     ->from('PillsBundle:Post', 'p') 
     ->join('p.tag', 't') 
     ->where('t = :tag') 
     ->setParameter('tag', $tag) 
     ->getQuery(); 

    $query = $qb->getQuery(); 
    $results = $query->getResult(); 

    return $results; 
} 

應該這樣工作,但你應該改變你的名字,是相當混亂,如果只發送一個標籤,你必須把它稱爲標籤,而不是標籤。總是當你有很多標籤屬於一個實體,你必須把它稱爲標籤,複數

+0

我更新我的問題 –

+0

更新我的答案:) –

+0

我更新我的問題。 $標記它不是實體CLAS標籤,這是場主題標籤,並在模板我forin帖子,並在行動hasTag這foring標籤和後'{%,爲post.tag%標籤} {{ tags }} {%ENDFOR%}' –

相關問題