我被要求收回一个人在几个月前离开公司的代码。 他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表单吗? –