Symfony2学说创建查询

用户名

我有3个实体:博客:

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;
//...
}

产品标签

class ProductTag {

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

    /**
     * @ORM\ManyToMany(targetEntity="Blog", mappedBy="blogs", cascade={"persist"})
     */
    private $blogs;
//...
}

产品

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;
//...
}

我想进行查询,这将给我对应于与产品对应的product_tags的博客:

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

怎么做?我需要使用它到knp_paginator :(

用户名

我找到了解决方案。问题是我在博客中创建了一个定向关系-product_tag和product-product_tag实体。根据此处的信息:http : //doctrine-orm.readthedocs.org/en/latest/reference/association-mapping.html我已将ProductTag实体的定义更改为休假:

//...
class ProductTag {
//...
/**
 * @ORM\ManyToMany(targetEntity="Blog", mappedBy="product_tags", cascade={"persist"})
 */
private $blogs;

/**
 * @ORM\ManyToMany(targetEntity="Product", mappedBy="product_tags", cascade={"persist"})
 */
private $products;
//...

它允许我在BlogRepository中创建以下方法:

public function getRelatedBlogsByProduct(Product $product) {
    return $this->createQueryBuilder('b')
            ->select('b')
            ->join('b.product_tags', 'pt')
            ->join('pt.products', 'p')
            ->where('p.id = :product_id')
            ->setParameter('product_id', $product->getId())
            ->getQuery()
            ->getResult();
}

它正在生成以下SQL:

SELECT b0_.id AS id0, b0_.title AS title1, b0_.author AS author2, b0_.blog AS blog3, b0_.image AS image4, b0_.created AS created5, b0_.updated AS updated6, b0_.published AS published7, b0_.is_homepage_slider AS is_homepage_slider8, b0_.is_category_slider AS is_category_slider9, b0_.is_breaking_news AS is_breaking_news10, b0_.category_id AS category_id11 FROM blog b0_ INNER JOIN blog_product_tag b2_ ON b0_.id = b2_.blog_id INNER JOIN product_tag p1_ ON p1_.id = b2_.product_tag_id INNER JOIN product_product_tag p4_ ON p1_.id = p4_.product_tag_id INNER JOIN Product p3_ ON p3_.id = p4_.product_id WHERE p3_.id = 2

SQL中的哪一种正在获取我想要的所有博客。

谢谢Ajeet的帮助,它对我帮助很大:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

symfony2:带有学说的本机查询

来自分类Dev

Symfony2学说查询生成器作为FROM子句中的子查询

来自分类Dev

symfony2学说oneone完整示例

来自分类Dev

Symfony2学说关联结果

来自分类Dev

ManyToOne作为ID的学说(symfony2)

来自分类Dev

Symfony2学说抛出NonUniqueResultException

来自分类Dev

使用YAML的Symfony2学说索引

来自分类Dev

Symfony2学说实体未水合

来自分类Dev

Symfony2学说Querybuilder全选

来自分类Dev

Symfony2学说manyToOne EntityNotFoundException

来自分类Dev

Symfony2与学说:findBy的嵌套条件

来自分类Dev

Symfony2学说NotIn问题

来自分类Dev

Symfony2学说关联结果

来自分类Dev

Symfony2:学说MySql数学函数

来自分类Dev

如何在Symfony2中使用APC案例学说准备查询

来自分类Dev

如何在symfony2中使用动态变量系统地过滤学说查询

来自分类Dev

以左联接和对象为结果的Symfony2学说查询

来自分类Dev

带有时间的symfony2学说缓存查询

来自分类Dev

如何在symfony2中使用动态变量系统地过滤学说查询

来自分类Dev

如何使学说在symfony2中没有实体的情况下创建表?

来自分类Dev

从symfony2学说的结果中获取对象的价值

来自分类Dev

Symfony2学说在next()中进行迭代

来自分类Dev

Symfony2学说Qb STR_TO_DATE未知函数

来自分类Dev

Symfony2学说无法识别的字段:

来自分类Dev

Symfony2学说,如何仅获取特定表的列名

来自分类Dev

Symfony2学说将计数全部作为整数

来自分类Dev

将mongodb命令转换为学说格式Symfony2

来自分类Dev

实体和MySQL中的学说数组类型(Symfony2)

来自分类Dev

Symfony2学说ORM级联分离不起作用