我仍然在没有给出任何手册的情况下离开开发者的代码。 我想知道是否有可能对原则说不要将数据保存在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