Doctrine Getting Started チュートリアルには、バグ作成の例があります。バグにはレポーターとエンティティ ユーザーのエンジニア プロパティがあります。
この例では、既存のレポーターと既存のエンジニアの ID を渡しています。この例では、ID を使用してデータベース内のユーザーを検索します。
$reporter = $entityManager->find("User", $theReporterId);
$engineer = $entityManager->find("User", $theDefaultEngineerId);
後で、レポーターとエンジニアがバグに添付されます。
$bug->setReporter($reporter);
$bug->setEngineer($engineer);
私はIDを知っているので、私は賢く新しいユーザーを作成し、渡された変数にIDを設定し、ユーザーに対してpersistを呼び出すと思いました。
$reporter = new User();
$reporter->setId($theReporterId);
$reporter->setName("Foo");
$entityManager->persist($reporter);
次に、新しい User オブジェクトを使用して setReporter/Engineer を呼び出し、バグに対して persist を呼び出し、次に flush を呼び出します。
ただし、これが発生すると、レポーターとエンジニア用に新しいユーザーが作成され、データベース内のバグのエントリが新しいユーザーの新しい ID に設定されます。
Doctrine は、新しいユーザーが既存のエンティティに基づいていることを認識していないようです。私がやりたいことをする方法はありますか?これは、データベースへのヒットをバイパスしてユーザーを取得する良い方法だと思います。