フラッシュする前に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を入力するので、それらについて心配する必要はありません。
詳細はこちら