0

単純な OneToMany 関係を持つ 2 つのエンティティを取得しましたが、すべてが期待どおりに機能します。

ユーザー エンティティ:

class User {
    /**
     * @ORM\OneToMany(targetEntity="Vita", mappedBy="owner")
     */
}

および vita エンティティ:

class Vita {
    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="vitas")
     */
}

ここまでは順調ですね。しかし、今は vita エンティティを変更し、OneToOne 関係でメタ エンティティを追加しました。このエンティティは所有者やその他のものを知っていますが、vita には所有者のプロパティがありません。

私が探しているのは、3 番目の表を参照として使用する機会です。共通の教義の方法はありますか?そんな感じ?

class User {
    /**
     * @ORM\OneToMany(targetEntity="Vita", mappedBy="meta.owner")
     */
}

編集:

User
- id
- username
- password

Vita
- id
- meta_id
- [other fields]

Meta
- id
- owner_id (User)
- modifier_id (User)
- [other fields]
  • 一人のユーザーがたくさんのVitaを持っています
  • 1つのVitaには1つのメタがあります

最初は owner_id は vita のプロパティでしたが、現在は meta に移動しました。

4

1 に答える 1

0

リレーションシップ スキーマによると、次のようになります。

class User {

    /**
     * @ORM\OneToMany(targetEntity="Meta", mappedBy="owner")
     */
    protected $metasOwned;

    /**
     * @ORM\OneToMany(targetEntity="Meta", mappedBy="modifier")
     */
    protected $metasModified;

}

class Vita {

    /**
     * @ORM\OneToOne(targetEntity="Meta", inversedBy="vita")
     */
    protected $meta;

}

class Meta {

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="metasOwned")
     */
    protected $owner;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="metasModified")
     */
    protected $modifier;

    /**
     * @ORM\OneToOne(targetEntity="Vita", mappedBy="meta")
     */
    protected $vita;

}

変数名が関係の逆側と相関していることに注意してください。

次に、コマンドを実行するだけです

php app/console doctrine:generate:entities Your/AwesomeBundle/Entity

ゲッターとセッターが作成され、すべて設定されます。

Your/AwesomeBundle/Entity: 実際のパスは であるか、またはその可能性がありますsrc/Your/AwesomeBundle/Entity

于 2013-03-14T18:59:32.523 に答える