KnpLabs DoctrineBehaviors 可翻译的查询计数



我正在使用可翻译的KnpLabs/DoctrineBehaviors。我有一个帖子实体和一个博客类别实体。

后.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)

相关内容

  • 没有找到相关文章

最新更新