私のデフォルトのロケールは pl_PL です。en_US に切り替えると、次のコードで期待される結果が得られます。
// locale set to en_US
$product = $em->getRepository('model\Product')->find(1);
$category = $em->getRepository('model\ProductCategory')->find(1);
echo $product->getName();
echo $category->getName();
// result
beach ball
summer
しかし、モデル\製品の関連付けでカテゴリを取得したい場合、翻訳されていません:
// locale set to en_US
$product = $em->getRepository('model\Product')->find(1);
echo $product->getName();
echo $product->getCategories()->first()->getName();
// result
beach ball
lato - pl_PL instead of en_US
翻訳可能な拡張機能のバグですか、それとも私のコードに何か問題がありますか?
ごみ:
select id, name from products; select object_id, locale, field, content from products_translations;
id | name
----+---------------
1 | pilka plazowa
object_id | locale | field | content
-----------+--------+-------+------------
1 | en_US | name | beach ball
select id, name from products_categories; select object_id, locale, field, content from products_categories_translations;
id | name
----+------
1 | lato
object_id | locale | field | content
-----------+--------+-------+---------
1 | en_US | name | summer
モデル\製品
/**
* @ORM\Table("products")
* @ORM\Entity(repositoryClass="repository\TranslatableRepository")
* @Gedmo\TranslationEntity(class="model\ProductTranslation")
*/
class Product {
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=255)
*/
protected $name;
/**
* @ORM\OneToMany(targetEntity="model\ProductCategory", mappedBy="product")
*/
protected $category_list;
}
モデル\製品カテゴリ
/**
* @ORM\Table("products_categories")
* @Gedmo\TranslationEntity(class="model\ProductCategoryTranslation")
* @ORM\Entity(repositoryClass="repository\TranslatableRepository")
*/
class ProductCategory {
/**
* @Gedmo\Translatable
* @ORM\Column(type="string", length=255)
*/
protected $name;
}