1

Symfony2.0プロジェクトをバージョン2.1rc1に移行しています。stof/doctrine-extensions-bundleおよびをインストールしgedmo/doctrine-extensionsてアプリケーションをテストした後、次のエラーが発生します。

「Gedmo\Translatable \ Entity \ MappedSuperclass\AbstractTranslation」のエンティティ「Company\TestBundle \ Entity\PageTranslation」サブクラスに識別子/主キーが指定されていません。すべてのエンティティには、識別子/主キーが必要です。

config.ymlはこのように見えます:

# Doctrine Configuration
doctrine:
    dbal:        
        driver:   %database_driver%
        host:     %database_host%
        port:     %database_port%
        dbname:   %database_name%
        user:     %database_user%
        password: %database_password%
        charset:  UTF8                    

    orm:
        auto_generate_proxy_classes: %kernel.debug%        
        connection: default
        auto_mapping: true        
        mappings:
            gedmo_translatable:
                type: annotation
                prefix: Gedmo\Translatable\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translatable/Entity"
                alias: GedmoTranslatable # this one is optional and will default to the name set for the mapping
                is_bundle: false
            gedmo_translator:
                type: annotation
                prefix: Gedmo\Translator\Entity
                dir: "%kernel.root_dir%/../vendor/gedmo/doctrine-extensions/lib/Gedmo/Translator/Entity"
                alias: GedmoTranslator # this one is optional and will default to the name set for the mapping
                is_bundle: false

stof_doctrine_extensions:
    default_locale: en
    translation_fallback: true
    orm:
        default:               
            translatable: true
            sluggable: true                             

これのドキュメントにStofDoctrineExtensionsBundleよると、問題ないはずです。私が確信していない唯一のことはauto_mapping: trueオプションです。

私のプロジェクトで変更した唯一のコードは私のにありCategoryTranslation classます。私は交換しました:

use Stof\DoctrineExtensionsBundle\Entity\AbstractTranslation;

に:

use Gedmo\Translatable\Entity\MappedSuperclass\AbstractTranslation;

StofバンドルにはAbstractTranslationもうクラスがないからです。

誰かが私がこれを修正する方法を教えてもらえますか?

4

2 に答える 2

0

StofDoctrineExtensions を使用している場合は必要ありませんgedmo/doctrine-extensions。また、PageTranslation で何かを生成する必要はありません

于 2013-01-26T23:50:36.600 に答える
0

以前の My PageTranslation エンティティ:

class PageTranslation extends AbstractTranslation
{
    /**
     * All required columns are mapped through inherited superclass
     */
}

コマンドラインでエンティティを生成した後の My PageTranslation エンティティ:

class PageTranslation extends AbstractTranslation
{
    /**
     * All required columns are mapped through inherited superclass
     */

    /**
     * @var integer $id
     */
    private $id;

    /**
     * @var string $locale
     */
    private $locale;

    .....etc....

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set locale
     *
     * @param string $locale
     * @return PageTranslation
     */
    public function setLocale($locale)
    {
        $this->locale = $locale;

        return $this;
    }

    /**
     * Get locale
     *
     * @return string 
     */
    public function getLocale()
    {
        return $this->locale;
    }

    ..etc....
}
于 2012-08-19T17:58:05.593 に答える