SQLSTATE [23000]:完整性约束违规:1451无法删除或更新父行:外键约束失败

时间:2017-03-31 00:49:48

标签: symfony symfony-3.1 symfony-3.2

我使用Wampserver完成了我的数据库,对于我使用casdace的关系,我做了反向启动,所以..我无法删除相关对象

这是我的实体

1rst:

/**
 * Voiture
 *
 * @ORM\Table(name="voiture")
 * @ORM\Entity
 */
class Voiture
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id_voiture", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    public $idVoiture;

    /**
     * @var string
     *
     * @ORM\Column(name="immatricule", type="string", length=50, nullable=false)
     */
    private $immatricule;

    /**
     * @var string
     *
     * @ORM\Column(name="marque", type="string", length=20, nullable=false)
     */
    private $marque;

    /**
     * @var string
     *
     * @ORM\Column(name="modele", type="string", length=20, nullable=false)
     */
    private $modele;

    /**
     * @var string
     *
     * @ORM\Column(name="typecarburant", type="string", length=20, nullable=false)
     */
    private $typecarburant;

    /**
     * @var integer
     *
     * @ORM\Column(name="nbcheveaux", type="integer", nullable=false)
     */
    private $nbcheveaux;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="datemarche", type="date", nullable=false)
     */
    private $datemarche;

    /**
     * @var integer
     *
     * @ORM\Column(name="nbr_place", type="integer", nullable=false)
     */
    private $nbrPlace;

    /**
     * @var integer
     *
     * @ORM\Column(name="id_user", type="integer", nullable=true)
     */
    private $idUser;

    /**
     * @return int
     */
    public function getIdVoiture()
    {
        return $this->idVoiture;
    }

    /**
     * @param int $idVoiture
     */
    public function setIdVoiture($idVoiture)
    {
        $this->idVoiture = $idVoiture;
    }

    /**
     * @return string
     */
    public function getImmatricule()
    {
        return $this->immatricule;
    }

    /**
     * @param string $immatricule
     */
    public function setImmatricule($immatricule)
    {
        $this->immatricule = $immatricule;
    }

    /**
     * @return string
     */
    public function getMarque()
    {
        return $this->marque;
    }

    /**
     * @param string $marque
     */
    public function setMarque($marque)
    {
        $this->marque = $marque;
    }

    /**
     * @return string
     */
    public function getModele()
    {
        return $this->modele;
    }

    /**
     * @param string $modele
     */
    public function setModele($modele)
    {
        $this->modele = $modele;
    }

    /**
     * @return string
     */
    public function getTypecarburant()
    {
        return $this->typecarburant;
    }

    /**
     * @param string $typecarburant
     */
    public function setTypecarburant($typecarburant)
    {
        $this->typecarburant = $typecarburant;
    }

    /**
     * @return int
     */
    public function getNbcheveaux()
    {
        return $this->nbcheveaux;
    }

    /**
     * @param int $nbcheveaux
     */
    public function setNbcheveaux($nbcheveaux)
    {
        $this->nbcheveaux = $nbcheveaux;
    }

    /**
     * @return \DateTime
     */
    public function getDatemarche()
    {
        return $this->datemarche;
    }

    /**
     * @param \DateTime $datemarche
     */
    public function setDatemarche($datemarche)
    {
        $this->datemarche = $datemarche;
    }

    /**
     * @return int
     */
    public function getNbrPlace()
    {
        return $this->nbrPlace;
    }

    /**
     * @param int $nbrPlace
     */
    public function setNbrPlace($nbrPlace)
    {
        $this->nbrPlace = $nbrPlace;
    }

    /**
     * @return int
     */
    public function getIdUser()
    {
        return $this->idUser;
    }

    /**
     * @param int $idUser
     */
    public function setIdUser($idUser)
    {
        $this->idUser = $idUser;
    }
}

2end

/**
 * Assurance
 *
 * @ORM\Table(name="assurance", indexes={@ORM\Index(name="id_carnet", columns={"id_voiture"})})
 * @ORM\Entity
 */
class Assurance
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id_assurance", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $idAssurance;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date", type="date", nullable=false)
     */
    private $date;

    /**
     * @var integer
     *
     * @ORM\Column(name="valeur", type="integer", nullable=false)
     */
    private $valeur;

    /**
     * @var string
     *
     * @ORM\Column(name="assurant", type="string", length=255, nullable=false)
     */
    private $assurant;

    /**
     * @var \Voiture
     *
     * @ORM\ManyToOne(targetEntity="Voiture")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_voiture", referencedColumnName="id_voiture")
     * })
     */
    private $idVoiture;

    /**
     * @return int
     */
    public function getIdAssurance()
    {
        return $this->idAssurance;
    }

    /**
     * @param int $idAssurance
     */
    public function setIdAssurance($idAssurance)
    {
        $this->idAssurance = $idAssurance;
    }

    /**
     * @return \DateTime
     */
    public function getDate()
    {
        return $this->date;
    }

    /**
     * @param \DateTime $date
     */
    public function setDate($date)
    {
        $this->date = $date;
    }

    /**
     * @return int
     */
    public function getValeur()
    {
        return $this->valeur;
    }

    /**
     * @param int $valeur
     */
    public function setValeur($valeur)
    {
        $this->valeur = $valeur;
    }

    /**
     * @return string
     */
    public function getAssurant()
    {
        return $this->assurant;
    }

    /**
     * @param string $assurant
     */
    public function setAssurant($assurant)
    {
        $this->assurant = $assurant;
    }

    /**
     * @return \Voiture
     */
    public function getIdVoiture()
    {
        return $this->idVoiture;
    }

    /**
     * @param \Voiture $idVoiture
     */
    public function setIdVoiture($idVoiture)
    {
        $this->idVoiture = $idVoiture;
    }
}

并删除控制器中的操作:

public function deleteVAction($id)
{
  $em = $this->getDoctrine()->getManager();
  $voiture= $em->getRepository('DataBundle:Voiture')->findOneBy(array('idVoiture'=>$id)) ;
  $em->remove($voiture);
  $em->flush();

  return $this->redirectToRoute('User_affiche_voiture') ;
}

0 个答案:

没有答案