2013-02-20 9 views
5

私は、最初にsymfony2プロジェクトを開始しました。FOSUserBundleをインストールしました。ymlベースのエンティティと関連してFOSUserBundleを使用

次に、私は(実際には、ORM Designerで生成された)いくつかのエンティティと、それらの間に関係を持つ必要があるエンティティとUserエンティティを作成しました。

私はItemsCollectionsがそのようにグループItems、およびUsersに属する、Usersに属しています。

私はFOSUserBundleを使用していたので、アノテーションを使用して定義された基本ユーザークラス(https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md、ステップ3a)しか持たず、config/doctrineフォルダも、User.ymlファイルもありません。

次に、MyBundle/Resources/config/doctrineフォルダを作成し、上記のymlファイルを追加しました。

コマンドラインツールでエンティティを生成しようとすると、すべて正常に動作します:ymlファイルからエンティティが作成されます。

しかし、この時点では、ブラウザで(私だけFOSUserBundleがインストールされていたとき)、ログインが以前働いていたURLをロードしようとすると、このエラーがスローされます。

MappingException: No mapping file found named '/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml' for class 'X\MyBundle\Entity\User'.

アクションに続いて、このようCRUDロジックを生成すると、私はフォルダに*.orm.ym lファイルがある限り動作しません。これらを削除すると、CRUDの生成は機能しますが、実際のmysqlテーブルの生成はできません。

これらのジャグリングでは、私もテーブルを手に入れることができますが、新しく生成されたCRUDが含まれているURLのいずれかを使用しようとすると、実際のアプリケーションは機能しません。 ymlに基づいています(これを削除すると「作業中」ということになります)、マッピングの知識はありません。

これは本質的に間違っていますか? FOSUserBundleに基づいてUserエンティティとの関係でymlベースのエンティティを持ち、まだ素晴らしいコマンドライン生成ツールを取得できるようにするには?

答えて

6

問題は、構成フォーマット(yamlと私は注釈を仮定している)が混在していることが原因です。モデルの注釈を削除して、自分のモデルと同じようにyamlファイルに置き換えることで、これを簡単に修正できます。

X\MyBundle\Entity\User: 
    type: entity 
    table: fos_user 
    id: 
     id: 
      type: integer 
      strategy: { generator: "AUTO" } 

残りのものがある:あなたのX \ MyBundle \エンティティ\ユーザーがFOSUSerBundleのUserEntityを拡張する際

残念ながらFOSUserBundle-ドキュメントがだけなので、ここで、注釈を使用する方法をお見せはYAMLフォーマットへの迅速な変換であり、ベースモデルがmapped-superclassで、すでにUser.orm.xmlの内容を説明しているので、FOSUserBundleが世話をしましたが、自分のモデルと同じように、既存の値を置き換えるか、追加の値を追加することもできます。

アプリ全体でアノテーションを使用しない場合は、app/config/config.ymlでアノテーションを無効にして副作用を防ぐこともできます。

+1

それは完全にそれでした。私はSymfonyにこれを達成するためのヒントを与えなければならないと思っていました。1つのことは、User.orm.ymlに行を追加して、テーブルマッピングを定義する必要があるということです。デフォルトではuserというテーブルが検索されるため、テーブルを追加しました。fos_user(私はfosバンドルからuserテーブルを生成しました)。 – cbaltatescu

+1

おっと、あなたは正しいです:テーブル:fos_user'はドキュメントで言及されていますが、私はyamlでそれを逃しました。すぐに解決します。 – dbrumann

+1

継承をどのように構成しますか?私はこれを試してみますが、 'php app/console doctrine:schema:update --dump-sql'は' CREATE TABLE fos_user(ID INT NOT NULL、PRIMARY KEY(ID))を返します。継承列は追加されません。 –

関連する問題