0
我使用Symfony2 +原則+可翻譯從DoctrineExtensions。Doctrine可翻譯如何只讀取記錄與翻譯
我有一個實體文章,有幾個可翻譯的字段,如標題和內容。現在發生的事情是,我用中文創作了一堆文章,但沒有添加英文翻譯。當我嘗試在我的主頁上顯示前8條最新文章時,這給了我一些問題......當我用英文查看我的主頁時,它會在那裏顯示一堆無標題文章(中文文章沒有英文翻譯)。
我通過使用ORM查詢提示: 「\ Doctrine \ ORM \ Query :: HINT_CUSTOM_OUTPUT_WALKER」在Translatable擴展中找到了此解決方案。
這可讓您直接查詢實體的實際存儲在ext_translations中而不是實體表中的翻譯字段。
因此,我用它來獲取對網頁中的文章代碼如下所示:
public function getNewestArticles($limit = 1){
$dql =
"SELECT a FROM NewsBundle:Article a
WHERE a.published = 1
AND a.title != ''
ORDER BY a.created_at DESC";
$query = $this->_em->createQuery($dql);
$query->setMaxResults($limit);
$query->setHint(
\Doctrine\ORM\Query::HINT_CUSTOM_OUTPUT_WALKER,
'Gedmo\\Translatable\\Query\\TreeWalker\\TranslationWalker'
);
$result = $query->getResult();
return $result;
}
這實際工作,但生成的查詢是效率低下,它會減慢頁面很多..我在說1800毫秒的查詢。我也試圖把我需要的字段放在select語句中,這會提高性能,但還不夠。
任何想法?