我被要求收回一個人在幾個月前離開公司的代碼。 他developped一個應用程序,允許一些人要求改變防火牆規則 當土特產品問一個變化,您可以選擇/填充: 防火牆的域名(對應於防火牆接口) 端口 源地址 目的地址 服務類型(TCP/UDP/ICMP)Symfony唯一違規.....鍵xxxxx已存在
有2個表中的數據庫:
Rule FW
---------- ---------
ID ID
Fw_Id Name
idrule Description
Port ----------
Source Address
Destination Adress
Service Type
----------
這裏只有1防火牆/規則和1條規則/防火牆
當我嘗試保存表單時,我的問題出現了,原則試圖保存所有的防火牆信息,不僅僅是id,並且告訴我們存在唯一的密鑰違規。 我搜查,但無法弄清楚什麼是錯
規則實體:
<?php
namespace FWBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* Rule
*
* @ORM\Table(name="rule", uniqueConstraints={@ORM\UniqueConstraint(name="unique_fw_id", columns={"fw_id", "idrule"})})
* @ORM\Entity(repositoryClass="FwBundle\Repository\ruleRepository")
* @UniqueEntity(fields={"fw","idrule"}, message="Rule already exists")
*/
class Rule
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="FwBundle\Entity\fw")
* @ORM\JoinColumn(name="fw_id",referencedColumnName="id")
* @Assert\Valid()
*/
private $fw;
/**
* @var int
*
* @ORM\Column(name="idrule", type="integer")
*/
private $idrule;
的FW實體:
<?php
namespace FWBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* fw
*
* @ORM\Table(name="fw")
* @ORM\Entity(repositoryClass="FWBundle\Repository\FwRepository")
* @UniqueEntity(fields="name", message="Firewall already exists.")
*/
class Fw
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=255, unique=true)
*/
private $name;
的RuleController:
public function AddAction($id,Request $request)
{
$namespace = 'FwBundle';
$em = thiss->getDoctrine()->getManager();
$repositoryRule = $em->getRepository($namespace.':Rule');
$repositoryFw = $em->getRepository($namespace.':Fw');
$rule = new rule();
$form = $this->createForm(RuleType::class, $rule,array('fw'=>$id));
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$rule = $form->getData();
$em->persist($rule);
$em->flush();
}
}
你能與你的規則表單類編輯您的帖子? –
你也可以添加你的RuleType表單嗎? –