/** * @inheritdoc */ public function init() { if ($this->logicalFormat === null) { $format = $this->type . 'Format'; $pattern = Yii::$app->formatter->{$format}; } else { $pattern = $this->logicalFormat; } if (substr($pattern, 0, 4) === 'php:') { $this->_phpLogicalFormat = substr($pattern, 4); } else { $this->_phpLogicalFormat = FormatConverter::convertDateIcuToPhp($pattern, $this->type); } if ($this->physicalFormat === null) { $driverName = Yii::$app->db->driverName; if (isset(static::$dbDatetimeFormat[$driverName])) { $pattern = static::$dbDatetimeFormat[$driverName][$this->type]; } else { $pattern = static::$dbDatetimeFormat['default'][$this->type]; } } else { $pattern = $this->physicalFormat; } if (substr($pattern, 0, 4) === 'php:') { $this->_phpPhysicalFormat = substr($pattern, 4); } else { $this->_phpPhysicalFormat = FormatConverter::convertDateIcuToPhp($pattern, $this->type); } parent::init(); }
/** * @inheritdoc */ public function attach($owner) { /* @var $owner \yii\db\ActiveRecord */ foreach ($this->attributes as $attribute => $defition) { list($relation, $field) = $defition; if (is_string($relation)) { $r = $owner->getRelation($relation); $class = $r->modelClass; $link = $r->link; } elseif (is_array($relation)) { $class = $relation[0]; $link = array_slice($relation, 1); } else { throw new InvalidConfigException("Invalid attribute definision for \"{$attribute}\""); } foreach ($link as $from => $to) { $this->_relations[$attribute] = [$class, $field, $from]; $this->attributes[$attribute] = $to; break; } } parent::attach($owner); }