KnpLabs DoctrineBehaviors 可翻译查询计数
KnpLabs DoctrineBehaviors translatable query count
我正在使用 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;
...
}
我想显示相关类别的帖子。但是现在我有很多疑问。
如何在多对多关联中加入翻译以优化查询计数?
您要查找的是翻译中的 LEFT JOIN:
SELECT post, category, category_trans
FROM Post post
LEFT JOIN post.categories category
LEFT JOIN category.translations category_trans
如果您只想select当前语言的翻译:
LEFT JOIN category.translations category_trans WITH category_trans.locale = :locale
(将 locale
参数绑定到查询)。
如果您使用的是查询生成器:
->leftJoin('category.translations', 'category_trans', 'WITH', category_trans.locale = :locale)
我正在使用 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;
...
}
我想显示相关类别的帖子。但是现在我有很多疑问。
如何在多对多关联中加入翻译以优化查询计数?
您要查找的是翻译中的 LEFT JOIN:
SELECT post, category, category_trans
FROM Post post
LEFT JOIN post.categories category
LEFT JOIN category.translations category_trans
如果您只想select当前语言的翻译:
LEFT JOIN category.translations category_trans WITH category_trans.locale = :locale
(将 locale
参数绑定到查询)。
如果您使用的是查询生成器:
->leftJoin('category.translations', 'category_trans', 'WITH', category_trans.locale = :locale)