Doctrine orm KnpLabs DoctrineBehaviors可翻译查询计数

Doctrine orm KnpLabs DoctrineBehaviors可翻译查询计数,doctrine-orm,symfony-2.6,Doctrine Orm,Symfony 2.6,我正在使用KnpLabs/DoctrineBehaviorstranslateable。 我有一个Post实体和一个blogcomporate实体 Post.php class Post { use Timestampable; /** * @ManyToMany(targetEntity="BlogCategory") * @JoinTable(name="post_categories") * @var ArrayCollection

我正在使用KnpLabs/DoctrineBehaviorstranslateable。 我有一个Post实体和一个blogcomporate实体

Post.php

class Post
{
    use Timestampable;

    /**
     * @ManyToMany(targetEntity="BlogCategory")
     * @JoinTable(name="post_categories")
     * @var ArrayCollection
     */
    protected $categories;

    ...
}




class BlogCategory
{
    use Translatable;

    /**
     * @Id()
     * @GeneratedValue(strategy="AUTO")
     * @Column(type="integer")
     * @var int
     */
    private $id;

     ...
}




class BlogCategoryTranslation
{
    use Translation;

    /**
     * @Column()
     * @NotBlank()
     * @var string
     */
    protected $name;

    ...
}
我想显示与相关类别的职位。但现在我有很多疑问


如何在多对多关联中加入翻译以优化查询计数?

您要查找的是翻译上的左连接:

SELECT post, category, category_trans
FROM Post post
LEFT JOIN post.categories category
LEFT JOIN category.translations category_trans
如果只想选择当前语言的翻译:

LEFT JOIN category.translations category_trans WITH category_trans.locale = :locale
(将
locale
参数绑定到查询)

如果您使用的是查询生成器:

->leftJoin('category.translations', 'category_trans', 'WITH', category_trans.locale = :locale)