抛出错误
SQLSTATE [23000]:完整性约束违规:1048列“完成”不能为空
如何“告诉”实体管理器不要考虑水果对象,因为它会抛出错误?
我有一个像这样的对象:
class Fruit {
/**
* @Id @Column(type="integer")
* @GeneratedValue(strategy="AUTO")
*/
private $id;
/** @Column(type="string", length=10, nullable=true) */
private $name;
/** @Column(type="boolean") */
private $complete;
/* Omitted to make it simple */
}
这样的方法:
public function uploadAction(){
try{
/* Omitted to make it simple */
while ($data = fgetcsv($fic, 1024, $delimiter)) {
try {
$fruit = $fruitManager->createFruit($data);
$outcome_fruit = $fruit->id;
} catch (\Exception $e) {
$outcome_details[] = $e->getMessage();
}
}
fclose($fic);
@unlink($file_path);
$csv_data = $this->view->io->build_csv_file($outcome_details);
$csv_import->output_csv = base64_encode(gzencode($csv_data));
$this->em->persist($csv_import);
// error here
$this->em->flush();
//
} catch (\Exception $e) {
print $e->getMessage();
exit;
}
}
我的fruitManager
class FruitManager{
public function createFruit($name){
$fruit = new \Entities\Fruit;
$fruit->name = $name;
throw new Exception("Exception.");
$fruit->complete = 1;
$this->em->persist($fruit);
$this->em->flush();
}
}
答案 0 :(得分:2)
你几乎没有选择:
/** @Column(type="boolean", nullable=true) */
/** @ORM\Column(type="boolean", nullable=false, options={"default" : false}) */
private $complete = false;
分配默认值,如Freelancer所说根据逻辑需要,我更喜欢前两个选项中的一个。 感谢。
答案 1 :(得分:0)
尝试根据需要设置private $complete = false;
或true。