私は、最初にsymfony2プロジェクトを開始しました。FOSUserBundleをインストールしました。ymlベースのエンティティと関連してFOSUserBundleを使用
次に、私は(実際には、ORM Designerで生成された)いくつかのエンティティと、それらの間に関係を持つ必要があるエンティティとUserエンティティを作成しました。
私はItems
がCollections
がそのようにグループ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ベースのエンティティを持ち、まだ素晴らしいコマンドライン生成ツールを取得できるようにするには?
それは完全にそれでした。私はSymfonyにこれを達成するためのヒントを与えなければならないと思っていました。1つのことは、User.orm.ymlに行を追加して、テーブルマッピングを定義する必要があるということです。デフォルトではuserというテーブルが検索されるため、テーブルを追加しました。fos_user(私はfosバンドルからuserテーブルを生成しました)。 – cbaltatescu
おっと、あなたは正しいです:テーブル:fos_user'はドキュメントで言及されていますが、私はyamlでそれを逃しました。すぐに解決します。 – dbrumann
継承をどのように構成しますか?私はこれを試してみますが、 'php app/console doctrine:schema:update --dump-sql'は' CREATE TABLE fos_user(ID INT NOT NULL、PRIMARY KEY(ID))を返します。継承列は追加されません。 –