I have 3 Entities: Blog:
class Blog {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//...
/**
* @ORM\ManyToMany(targetEntity="ProductTag", inversedBy="blogs", cascade={"persist"})
* @ORM\JoinTable(name="blog_product_tag",
* joinColumns={@ORM\JoinColumn(name="blog_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="product_tag_id", referencedColumnName="id")}
* )
*/
protected $product_tags;
//...
}
ProductTag
class ProductTag {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//...
/**
* @ORM\ManyToMany(targetEntity="Blog", mappedBy="blogs", cascade={"persist"})
*/
private $blogs;
//...
}
Product
class Product {
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
//...
/**
* @ORM\ManyToMany(targetEntity="ProductTag", inversedBy="products", cascade={"persist"})
* @ORM\JoinTable(name="product_product_tag",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="product_tag_id", referencedColumnName="id")}
* )
*/
protected $product_tags;
//...
}
And i want to make query which will give me blogs which are corresponded to product_tags which are corresponded to products:
SELECT b . *
FROM `product` p
JOIN product_product_tag ppt ON ( p.id = ppt.product_id )
JOIN product_tag pt ON ( ppt.product_tag_id = pt.id )
JOIN blog_product_tag bpt ON ( pt.id = bpt.product_tag_id )
JOIN blog b ON ( bpt.blog_id = b.id )
WHERE p.id =5
How to do that? I need to use this to knp_paginator :(