私はまだ開発者の背後にあるコードを何も手渡さずに残しています。 私は、2つのテーブルの永続データにデータを保持しないようdoctrineに言えるかどうかを知りたいと思っています。 2表:寄せられるルールのdoctrine associationちょうど2つのテーブルのうちの1つを埋める
ルール=>店舗ルールのすべての要素(名前、ポート、サービス、ソース アドレス、ステータス、等...)
ステータス=>格納状態(、
/** *@ORM\ManyToOne(targetEntity="status", inversedBy="statuses", cascade={"persist"}) *@ORM\JoinColumn("name="status_id", referencedColumnName="id", nullable=false) */ private $status
ステータスエンティティ:
生産では、)
ルールエンティティを拒否の
/**
*@ORM\OneToMany(targetEntity="rule", mappedBy="status")
*/
private $statuses
テーブル:
---------- ---------
Rule Status
---------- ----------
ID ID
Name Name
Status_Id Colour
SourcePort ----------
DestinationPort
Protocol
----------
問題は、私は新しいルールを保存しようとするたびに、教義はSTATUS_IDようなテーブルの状態でstatus_in_rule_idのIDを保持しようとするということです。
私は唯一のステータステーブルに何かを持続しようとせずに、ルールTBLEでSTATUS_IDを保存するために教義をtelleする方法があるかどうかを知りたいのですが
RuleController:
$namespace = 'FwBundle';
$em = $this->getDoctrine()->getManager($this->getUser()->getUserService()->getName());
$repositoryFw = $em->getRepository($namespace.':Fw');
$repositoryStatus = $em->getRepository($namespace.':Status');
$liste_fws = $repositoryFw->myFindVisible();
$rule = new rule();
$form = $this->createForm(RuleType::class, $rule,array('fw'=>$id));
if ($form->isSubmitted() && $form->isValid()) {
$fw = $repositoryFw->findOneById($id);
$status = $repositoryStatus->findOneByShortName('startvalue');
$rule->setStatus($status);
$em->persist($rule);
$em->flush();
ダンプメッセージ:
status {#1509 ▼
-id: 1
-name: "just posted by customer"
-shortName: "startvalue"
-coulour: "blue"
-statuses: PersistentCollection {#1511 ▼
-snapshot: []
-owner: status {#1509}
-association: array:15 [ …15]
-em: EntityManager {#449 …11}
-backRefFieldName: "status"
-typeClass: ClassMetadata {#463 …}
-isDirty: false
#collection: ArrayCollection {#1512 ▶}
#initialized: false
}
}
していることを確認するためにチェックし、それがのIDを使用します既存のステータスエンティティ。 –
お返事ありがとうございます、申し訳ありませんが、既に存在するステータスを設定するとどういう意味ですか? – ricardo