save(['weigh' => $row['id']]); }); self::beforeWrite(function ($row) { //在更新之前对数组进行处理 foreach ($row->getData() as $k => $value) { if (is_array($value) && is_array(reset($value))) { $value = json_encode(self::getArrayData($value), JSON_UNESCAPED_UNICODE); } else { $value = is_array($value) ? implode(',', $value) : $value; } $row->setAttr($k, $value); } }); } public function getBegintimeTextAttr($value, $data) { $value = $value ? $value : $data['begintime']; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } protected function setBegintimeAttr($value) { return $value && !is_numeric($value) ? strtotime($value) : ($value ? $value : null); } public function getEndtimeTextAttr($value, $data) { $value = $value ? $value : $data['endtime']; return is_numeric($value) ? date("Y-m-d H:i:s", $value) : $value; } protected function setEndtimeAttr($value) { return $value && !is_numeric($value) ? strtotime($value) : ($value ? $value : null); } public function getStatusList() { return ['normal' => __('Normal'), 'hidden' => __('Hidden')]; } public function getStatusTextAttr($value, $data) { $value = $value ? $value : $data['status']; $list = $this->getStatusList(); return $list[$value] ?? ''; } public static function getArrayData($data) { if (!isset($data['value'])) { $result = []; foreach ($data as $index => $datum) { $result['field'][$index] = $datum['key']; $result['value'][$index] = $datum['value']; } $data = $result; } $fieldarr = $valuearr = []; $field = isset($data['field']) ? $data['field'] : (isset($data['key']) ? $data['key'] : []); $value = isset($data['value']) ? $data['value'] : []; foreach ($field as $m => $n) { if ($n != '') { $fieldarr[] = $field[$m]; $valuearr[] = $value[$m]; } } return $fieldarr ? array_combine($fieldarr, $valuearr) : []; } }