【发布时间】:2023-03-15 18:52:01
【问题描述】:
我将一些来自表单(由 CodeIgniter 管理)的值保存到简单的 Doctrine 实体中。我的一些字段是可选的。
控制器示例代码:
$entity->setDistance($this->input->post('distance'));
$entity->setKilometricRate($this->input->post('kilometric_rate'));
$this->getEntityManager()->persist($entity);
$this->getEntityManager()->flush($entity);
当我不填写表单中的某些字段时,将0持久化到数据库中(因为php将“”转换为0)。
实体示例代码:
/**
* @var float|null
*
* @ORM\Column(name="distance", type="float", precision=53, scale=0, nullable=true)
*/
private $distance;
/**
* @var float|null
*
* @ORM\Column(name="kilometric_rate", type="float", precision=53, scale=0, nullable=true)
*/
private $kilometricRate;
有没有办法告诉 Doctrine 保存 NULL 值而不是 0 或空字符串,而不测试所有 setter 中的所有字符串?
目前我正在使用自定义助手,但我很确定有更好的方法来做到这一点。
助手:
public function getValueOrNull(?string $postedVal):?string{
if ($postedVal==="0") return "0";
return (!empty($postedVal) ? $postedVal : null);
}
【问题讨论】:
标签: codeigniter orm doctrine http-post codeigniter-3