0

필자의 목표는 필드에서 uniqueEntity 제약 조건을 가진 엔티티의 유효성을 검사하는 것입니다. 이 필드는 라이프 사이클 콜백 PrePersist를 사용하여 연결된 2 개의 매핑되지 않은 필드로 구성됩니다. 문제는 유효성 검사가 발생하지 않으며 시스템이 데이터를 데이터베이스에 삽입 할 수없는 경우이를 허용한다는 것입니다.symfony - 매핑 된 필드가없는 고유 엔티티 제약

/** 
* Recipe 
* 
* @ORM\Table() 
* @ORM\Entity(repositoryClass="AppBundle\Entity\RecipeRepository") 
* @ORM\HasLifecycleCallbacks() 
* @UniqueEntity(
*  ignoreNull = false, 
*  fields={"amount"}, 
*  message="Not valid" 
*) 
*/ 
class Recipe 
{...} 

...

/** 
* @ORM\PrePersist() 
*/ 
public function preSave() 
{ 
    $this->amount = $this->getAmountInteger() . '.' . $this->getAmountDecimal(); 
} 
+0

속성 값'_' (UniqueEntity 제약 조건 유지) _'ORM \ Column (name = "amount", type = "string", length = 255, unique = true) – Delphine

+0

스키마 도구 전용으로 'unique = true'가 아닌가요? –

+0

@Delphine, 필드에 unique = true 제약 조건이 설정되어 있으므로 양식의 유효성을 올바르게 검사 할 수없고 행의 고유성을 처리 할 수 ​​없습니다. 사실, 수표는 플러시와 함께 제공되며 유효한 양식 방법이 아닙니다. –

답변

0

나는이 정의와 실체를 가지고 잘 실행하지만, 귀하의 경우는 다르다 때문에 프리 세이브에 세트 '양'...

* @UniqueEntity(fields={"amount"}, message="Not valid") 
* @ORM\Table(uniqueConstraints={@ORM\UniqueConstraint(name="unique_amount", columns={"amount"})}) 

다른 엔티티 제가

사용
@ORM\Column(type="string", length=127, nullable=false, unique=TRUE) 

토륨 서로 다른 첫 번째 경우 나는 compuest 키를 사용하고 = {field1, field2} 필드에서 키를 정의합니다. 두 번째 예제에서는 간단한 고유 키를 사용합니다.