2

Userログイン登録ページがあります。

同じページにもう1つのフォームがありUserInterestsます。

UserProfile今、私はユーザーが永続化された後に新しいものを作成する PostPersist 関数を持っています

現在、UserProfile はユーザー ID とUserInterestsリンクされており、UserProfile ID

現在、クライアントは同じユーザー ページで UserInterests を必要としていますが、UserProfile がまだ作成されていないという問題があります。どうすればそれらを永続化できますか。何か方法はありますか

4

1 に答える 1

4

フラッシュする前にIDを取得できるとは思いません。

モデル間に関連付けを作成することができます。そうすれば、Doctrineが保存時にIDを処理し、次のようなものでUserInterestsを取得できます。

$user->getProfile()->getInterests();

したがって、UserProfileを保持するプロパティを持つUserモデルがあります。

/**
 * @OneToOne(targetEntity="UserProfile")
 * @JoinColumn(name="profile_id", referencedColumnName="id")
 **/
private $profile;

また、UserProfileクラスには、UserInterestsモデルを保持するためのプロパティが必要です。

/**
 * @OneToOne(targetEntity="UserInterests")
 * @JoinColumn(name="interests_id", referencedColumnName="id")
 **/
private $interests;

これで、空の$ userProfileモデル(他のモデルをリンクするために、実際の入力はpostPersist関数で実行できます)と$ userInterestsモデルを作成し、それらを次のように関連付けることができます。

$interests = new UserInterests();

// create an empty UserProfile, and fill it in your PostPersist function, 
// that way it can already be used to link the User and UserInterests
$profile = new UserProfile();

$profile->setInterests($interests);
$user->setProfile($profile);

これで、Doctrineは永続化するときにIDを入力するので、それらについて心配する必要はありません。

詳細はこちら

于 2012-08-20T08:25:06.650 に答える