我仍然在沒有給出任何手冊的情況下離開開發者的代碼。 我想知道是否有可能對原則說不要將數據保存在2個表中的持久數據中。 2表:學說協會只填寫了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_in_rule_id的ID在像STATUS_ID表狀態。
我想知道是否有到Telle公司學說僅保存在規則tble的STATUS_ID沒有試圖在狀態表堅持什麼辦法
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
}
}
如果你設置你的'Rule'實體已經存在的'Status'實體,也不會堅持一個全新的狀態,它會使用的ID您現有的狀態實體。 –
感謝您的回答,我很抱歉,但您是通過設置一個已經存在的狀態是什麼意思? – ricardo