Skip to content

Instantly share code, notes, and snippets.

@taiebb
Last active March 30, 2016 15:15
Show Gist options
  • Save taiebb/64261eca8194cecaefce775724cf477a to your computer and use it in GitHub Desktop.
Save taiebb/64261eca8194cecaefce775724cf477a to your computer and use it in GitHub Desktop.
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-1' for key 'languagesCandidates'
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
use Symfony\Component\Validator\Constraints as Assert;
/**
* CandidatesLanguages
* @ORM\Table(name="candidates_languages", uniqueConstraints={@ORM\UniqueConstraint(name="languagesCandidates", columns={"language_id", "candidate_id"})}))
* @ORM\Entity(repositoryClass="AppBundle\Repository\CandidatesLanguagesRepository")
* @ORM\HasLifecycleCallbacks
* @UniqueEntity(fields={"language","candidate"}, message="Déja utitlisé")
*/
class CandidatesLanguages {
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var smallint
*
* @ORM\Column(name="level", type="smallint")
* @Assert\NotBlank (
* message = "Ce champ est obligatoire"
* )
*/
private $level;
/**
* @var \DateTime
*
* @ORM\Column(name="created_at", type="datetime")
*/
private $createdAt;
/**
* @var \DateTime
*
* @ORM\Column(name="updated_at", type="datetime", nullable=true)
*/
private $updatedAt;
/**
* @var string
*
* @ORM\Column(name="token", type="string", length=255)
*/
private $token;
/**
*
* @ORM\ManyToOne(targetEntity="Candidate", inversedBy="candidatesLanguages")
* @ORM\JoinColumn(name="candidate_id", referencedColumnName="id", onDelete="CASCADE")
*
*/
private $candidate;
/**
*
* @ORM\ManyToOne(targetEntity="Language", inversedBy="languagesCandidates")
* @ORM\JoinColumn(name="language_id", referencedColumnName="id", onDelete="CASCADE")
* @Assert\NotBlank (
* message = "Ce champ est obligatoire"
* )
*/
private $language;
/**
* Get id
*
* @return integer
*/
public function getId() {
return $this->id;
}
/**
* Set candidate
*
* @param \AppBundle\Entity\Candidate $candidate
* @return CandidatesLanguages
*/
public function setCandidate(\AppBundle\Entity\Candidate $candidate = null) {
$this->candidate = $candidate;
return $this;
}
/**
* Get candidate
*
* @return \AppBundle\Entity\Candidate
*/
public function getCandidate() {
return $this->candidate;
}
/**
* Set language
*
* @param \AppBundle\Entity\Language $language
* @return CandidatesLanguages
*/
public function setLanguage(\AppBundle\Entity\Language $language = null) {
$this->language = $language;
return $this;
}
/**
* Get language
*
* @return \AppBundle\Entity\Language
*/
public function getLanguage() {
return $this->language;
}
/**
* Set token
*
* @param string $token
* @return CandidatesLanguages
*/
public function setToken($token) {
$this->token = $token;
return $this;
}
/**
* Get token
*
* @return string
*/
public function getToken() {
return $this->token;
}
/**
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function generateToken() {
if ($this->getToken() == null) {
$this->setToken(sha1(uniqid(mt_rand(), true)));
}
}
/**
* Set createdAt
*
* @param \DateTime $createdAt
* @return CandidatesLanguages
*/
public function setCreatedAt($createdAt) {
$this->createdAt = $createdAt;
return $this;
}
/**
* Get createdAt
*
* @return \DateTime
*/
public function getCreatedAt() {
return $this->createdAt;
}
/**
* Set updatedAt
*
* @param \DateTime $updatedAt
* @return CandidatesLanguages
*/
public function setUpdatedAt($updatedAt) {
$this->updatedAt = $updatedAt;
return $this;
}
/**
* Get updatedAt
*
* @return \DateTime
*/
public function getUpdatedAt() {
return $this->updatedAt;
}
/**
* Now we tell doctrine that before we persist or update we call the updatedTimestamps() function.
*
* @ORM\PrePersist
* @ORM\PreUpdate
*/
public function updatedTimestamps() {
$this->setUpdatedAt(new \DateTime(date('Y-m-d H:i:s')));
if ($this->getCreatedAt() == null) {
$this->setCreatedAt(new \DateTime(date('Y-m-d H:i:s')));
}
}
/**
* Set level
*
* @param integer $level
* @return CandidatesLanguages
*/
public function setLevel($level) {
$this->level = $level;
return $this;
}
/**
* Get level
*
* @return integer
*/
public function getLevel() {
return $this->level;
}
}
<?php
namespace AppBundle\Controller\Jobseeker;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use AppBundle\Entity\Candidate;
use AppBundle\Entity\Formation;
use AppBundle\Entity\Experience;
use AppBundle\Entity\Language;
use AppBundle\Entity\CoverLetter;
use AppBundle\Entity\CandidatesLanguages;
use AppBundle\Entity\CandidatesCompetences;
use Symfony\Component\HttpFoundation\JsonResponse;
use Symfony\Component\Security\Core\Exception\AccessDeniedException;
/**
* Candidate controller.
*
* @Route("/jobseeker")
*/
class JobseekerController extends Controller {
//CandidatesLanguages
/**
* Displays a form to edit an existing CandidatesLanguages entity.
*
* @Route("/{token}/edit-language", name="front_candidates_languages_edit")
* @Method({"GET", "POST"})
*/
public function editLanguageAction(Request $request, CandidatesLanguages $candidatesLanguages) {
$edit_language_form = $this->createForm('AppBundle\Form\CandidatesLanguagesType', $candidatesLanguages);
$edit_language_form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
$websiteConfig = $em->getRepository('AppBundle:WebsiteConfig')->getWebsiteConfig();
$websiteSeoSettings = $em->getRepository('AppBundle:WebsiteSeoSettings')->getWebsiteSeoSetting();
$candidate = $candidatesLanguages->getCandidate();
if ($edit_language_form->isSubmitted() && $edit_language_form->isValid()) {
$em->persist($candidatesLanguages);
$em->flush();
// display flash message
$this->get('session')->getFlashBag()->add(
'notice', 'Vos modifications ont été enregistrées avec succès!'
);
return $this->redirectToRoute('jobseeker');
}
return $this->render('candidateslanguages/editJobseeker.html.twig', array(
'websiteConfig' => $websiteConfig,
'websiteSeoSettings' => $websiteSeoSettings,
'candidate' => $candidate,
'candidatesLanguage' => $candidatesLanguages,
'edit_language_form' => $edit_language_form->createView(),
));
}
/**
* Creates a new CandidatesLanguages entity.
*
* @Route("/language/new", name="front_candidate_language_new")
* @Method({"GET", "POST"})
*/
public function newCandidatesLanguagesAction(Request $request) {
//récupérer le candidate connecté
$account = $this->get('security.context')->getToken()->getUser();
$candidate = $account->getCandidate();
$candidatesLanguages = new CandidatesLanguages();
$form = $this->createForm('AppBundle\Form\CandidatesLanguagesType', $candidatesLanguages);
$form->handleRequest($request);
$em = $this->getDoctrine()->getManager();
$websiteConfig = $em->getRepository('AppBundle:WebsiteConfig')->getWebsiteConfig();
$websiteSeoSettings = $em->getRepository('AppBundle:WebsiteSeoSettings')->getWebsiteSeoSetting();
if ($form->isSubmitted() && $form->isValid()) {
$candidatesLanguages->setCandidate($candidate);
$em->persist($candidatesLanguages);
$em->flush();
// display flash message
$this->get('session')->getFlashBag()->add(
'notice', 'Vos modifications ont été enregistrées avec succès!'
);
return $this->redirectToRoute('jobseeker');
}
return $this->render('candidateslanguages/newJobseeker.html.twig', array(
'websiteConfig' => $websiteConfig,
'websiteSeoSettings' => $websiteSeoSettings,
'candidate' => $candidate,
'candidatesLanguages' => $candidatesLanguages,
'form' => $form->createView(),
));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment