ストーリー テーブルとユーザー テーブルがあります。story テーブルの列 userid は、user テーブルの id を参照する外部キーです。
ユーザーがストーリーテーブルに保存されている多くのストーリーを持つことができるという関係を設定しました。両方のテーブルのエンティティを作成しました。
ただし、ストーリー テーブルのみに操作を永続化しようとすると、新しいユーザー エントリの詳細が求められます。
私の目的は、既存の に新しいストーリーを追加することuserId
です。
ここにエラーを投稿しています:
エンティティの永続操作をカスケードするように構成されていない関係 'Story#_userId' を通じて、新しいエンティティが見つかりました: User@0000000038960c50000000008ea93852. この問題を解決するには: この不明なエンティティで明示的に EntityManager#persist() を呼び出すか、カスケードを構成してこの関連付けをマッピングで保持します (例: @ManyToOne(..,cascade={\"persist\"}))。
Story
エンティティに ManyToOne 関係を設定します。
/**
* @ManyToOne(targetEntity="User", inversedBy = "_story" )
* @JoinColumns({
* @JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $_userId;
データベース スキーマを確認したところ、関係が正しく設定されていることがわかりました。それで、ストーリーの挿入プロセスを実行しました。
$user = new User();
$user->setUserId($id);
$story = new Story();
$story->setContent("....");
$story->setUserid($user);
$this->em->persist($story);
$this->em->flush();