KnpLabs DoctrineBehaviors可翻译查询计数

时间:2015-03-09 13:20:03

标签: doctrine-orm symfony-2.6

我正在使用 KnpLabs / DoctrineBehaviors 进行翻译。 我有发布实体和 BlogCategory 实体。

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;

    ...
}

我想展示相关类别的帖子。但现在我有很多疑问。

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

1 个答案:

答案 0 :(得分:1)

您正在寻找的是翻译上的LEFT JOIN:

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)