4
두 필드의 "고유성"을 검증하는 데 문제가 있습니다. 두 필드 중 하나가 연결 엔티티 중 하나입니다. 논리는 하나의 국가에 대해 동일한 설명이있는 두 가지 세금이있을 수 없다는 것입니다.symfony 2 고유 한 제약 조건 확인 (연결 포함)
은 여기 내 (실패) 시도의 :
/**
* @ORM\Entity
* @ORM\Table(name="taxes", uniqueConstraints={@ORM\UniqueConstraint(columns={"country_id", "description"})})
* @UniqueEntity(fields={"country", "description"})
*/
class Tax
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column()
*/
protected $description;
/**
* @ORM\Column(type="float")
*/
protected $value;
/**
* @ORM\ManyToOne(targetEntity="Country", inversedBy="taxes")
*/
protected $country;
//getters and setters...
}
내가 중복 세무 법인 내 응용 프로그램을 테스트
이 양식 (말아야 때) 검증을 통과 심포니 오류가 발생합니다 : 을SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '1-ITBMS' for key 'country_id'
업데이트 : : Doctrine 2.2에서 수정 된 Doctrine 2.1의 알려진 bug입니다. 파일을 내 deps를 업데이트하고 deps.lock 후 최신 얻을 : 불행하게도, 심포니 2.0.11 (내 현재 버전) 교리 2.1과 함께 제공 내가 적절하게
가 업데이트 2 내 deps 파일을 업데이트하는 방법을 모른다 교리 2.2.1 파일 @elnur 아래에 제안 된대로 문제가 여전히 있습니다 : 복합 고유 키가 데이터베이스에서 만들어 지지만 유효성 검사가 올바르게 수행되지 않습니다. Doctrine 파일 만 업그레이드하면 문제가 해결되지 않습니다.
업데이트 3 : Symfony 코어를 버전 2.0.12로 업데이트 했는데도 문제가 해결되지 않습니다.
업데이트 4 (SOLVED) : 컨트롤러에서 오류가 발견되었습니다.
public function createAction($country_id)
{
//...
if($request->getMethod() == 'POST')
{
$form->bindRequest($request);
$tax->setCountry($country); //HERE IS THE ERROR...
if($form->isValid())
{
//...
}
}
//...
}
솔루션을 요청을 한 바인딩 전에 국가 설정 : 여기에 내 원래의 컨트롤러 코드입니다.
public function createAction($country_id)
{
//...
if($request->getMethod() == 'POST')
{
$tax->setCountry($country); //NOW IT WORKS...
$form->bindRequest($request);
if($form->isValid())
{
//...
}
}
//...
}
'{@ORM \ UniqueConstraint (열 = { "pais_id"를 대체, "descripcion"})})'여기에 오타를 만들지 않았습니까? – meze
네가 맞긴하지만 그게 바로 StackOverflow (내가 테스트하고있는 실제 코드가 아님)에 오타가 있었던 이유이다. 질문을 수정하려고합니다. Thanks –
업데이트 4에 대해 더 자세히 설명해 주시겠습니까? – Tjorriemorrie