2017-08-31 83 views
1

假设我有两个实体collegedepartment大学有很多部门(一对多)。我validation.yml看起来像UniqueEntity验证失败 - Symfony?

App\CollegeBundle\Entity\College: 
     - departments: 
      - Valid: ~ 
App\CollegeBundle\Entity\Department: 
    constraints: 
     - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity: 
      fields: [department_name, HOD ] 

当我试图坚持与各部门Unique Entity验证工作,后来当我试图添加其他新department实体college实体,坚持unique entity验证失败的正数学院实体我得到unique key violation,我犯了什么错误?

我使用CSV文件中的每一行csv import功能我在控制器做出一个Ajax调用例如

$department = new Department()  

if(isset($record["department_name"]) && strlen(trim($record["department_name"])) > 0) 
{ 
    $department->setDepartmentName($record["department_name"]); 
} 

if(isset($record["hod"]) && strlen(trim($record["hod"])) > 0) 
{ 
    $department->setHod($record["hod"]); 
} 

//set college 
$department->setCollege($college) 

//adding departments 
$college->addDepartment($department) 

$validate = $this->get('validator')->validate($college); 
if($validate->count()) 
{ 
    return [ "status" => "error" ] 
} 
else 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $em->persist($college); 
    $em->flush(); 

    return [ "status" => "success" ]; 
} 
+1

请告诉我们代码当你保存请 –

+0

@AlessandroMinoccheri我添加了代码 –

回答

0

如果不创建一个新的学院(所以你已经大学实体)但只有一个新的部门试试这个:

//set college 
$department->setCollege($college) 

$validate = $this->get('validator')->validate($department); 
if($validate->count()) 
{ 
    return [ "status" => "error" ] 
} 
else 
{ 
    $em = $this->getDoctrine()->getManager(); 
    $em->persist($department); 
    $em->flush(); 

    return [ "status" => "success" ]; 
} 

相反,如果你正在创建一个新的大学我也建议你首先创建一个新的学院,坚持它和冲洗,以它的ID号,并创建新部门