【问题标题】:KnpLabs DoctrineBehaviors translatable query countKnpLabs DoctrineBehaviors 可翻译查询计数
【发布时间】:2015-03-09 13:20:02
【问题描述】:

我正在使用 KnpLabs/DoctrineBehaviors 可翻译。 我有一个 Post 实体和一个 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;

    ...
}

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

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

【问题讨论】:

    标签: doctrine-orm symfony-2.6


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 2013-07-11
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      相关资源
      最近更新 更多