Я сохраняю некоторые значения из формы (управляемой 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
или пустую строку, без тестированиявсе строки во всех установщиках?
В данный момент я использую пользовательский помощник, но я совершенно уверен, что есть лучший способ сделать это.
Помощник:
public function getValueOrNull(?string $postedVal):?string{
if ($postedVal==="0") return "0";
return (!empty($postedVal) ? $postedVal : null);
}