framework/db/BaseActiveRecord.php
public static function populateRecord($record, $row)
    {
        $columns = array_flip($record->attributes());
        foreach ($row as $name => $value) {
            if (isset($columns[$name])) {
                $record->_attributes[$name] = $value;
            } elseif ($record->canSetProperty($name)) {
                $record->$name = $value;
            }
        }
        $record->_oldAttributes = $record->_attributes;
        $record->_related = [];
        $record->_relationsDependencies = [];
    }
public static function populateRecord($record, $row)
    {
        $columns = array_flip($record->attributes());
        foreach ($row as $name => $value) {
            if (isset($columns[$name])) {
                $record->_attributes[$name] = $value;
            } elseif ($record->canSetProperty($name)) {
                $record->$name = $value;
            }
        }
        $record->_oldAttributes = $record->_attributes;
        $record->_related = [];
        $record->_relationsDependencies = [];
    }
Populates an active record object using a row of data from the database/storage.

This is an internal method meant to be called to create active record objects after
fetching data from the database. It is mainly used by [[ActiveQuery]] to populate
the query results into active records.

When calling this method manually you should call [[afterFind()]] on the created
record to trigger the [[EVENT_AFTER_FIND|afterFind Event]].

@param BaseActiveRecord $record the record to be populated. In most cases this will be an instance
created by [[instantiate()]] beforehand.
@param array $row attribute values (name => value)