Skip to content

Commit 3c55c06

Browse files
PopulatePatch now supports nullable fields.
1 parent 3458836 commit 3c55c06

File tree

1 file changed

+27
-20
lines changed

1 file changed

+27
-20
lines changed

ResourceEntityTrait.php

+27-20
Original file line numberDiff line numberDiff line change
@@ -334,30 +334,37 @@ public function populatePatch($data) {
334334

335335
$fieldData = ModelDefinitionCache::getFieldData($model->getEntityName());
336336
$fieldName2Type = [];
337-
foreach($fieldData as $field) $fieldName2Type[$field->name] = $field->type;
337+
foreach ($fieldData as $field) {
338+
$fieldName2Type[$field->name] = $field;
339+
}
338340

339341
$fields = array_keys($data);
340342
$fields = array_intersect($fields, $model->getTableFields());
341343
$fields = array_diff($fields, $this->getPopulateIgnore());
342-
foreach($data as $field => $value) {
343-
if(in_array($field, $fields)) {
344-
switch($fieldName2Type[$field]) {
345-
case 'int':
346-
$this->{$field} = (int)$value;
347-
break;
348-
case 'float':
349-
case 'double':
350-
case 'decimal':
351-
$this->{$field} = (double)$value;
352-
break;
353-
case 'tinyint':
354-
$this->{$field} = (bool)$value;
355-
break;
356-
case 'datetime':
357-
$this->{$field} = $value ? date('Y-m-d H:i:s', strtotime($value)) : null;
358-
break;
359-
default:
360-
$this->{$field} = $value;
344+
foreach ($data as $field => $value) {
345+
if (in_array($field, $fields)) {
346+
$fieldData = $fieldName2Type[$field];
347+
if ($fieldData->nullable && is_null($value)) {
348+
$this->{$field} = null;
349+
} else {
350+
switch ($fieldName2Type[$field]->type) {
351+
case 'int':
352+
$this->{$field} = (int)$value;
353+
break;
354+
case 'float':
355+
case 'double':
356+
case 'decimal':
357+
$this->{$field} = (double)$value;
358+
break;
359+
case 'tinyint':
360+
$this->{$field} = (bool)$value;
361+
break;
362+
case 'datetime':
363+
$this->{$field} = $value ? date('Y-m-d H:i:s', strtotime($value)) : null;
364+
break;
365+
default:
366+
$this->{$field} = $value;
367+
}
361368
}
362369
}
363370
}

0 commit comments

Comments
 (0)