/**
  * Converts the indexBy column name an anonymous function that writes rows to the
  * result array indexed an attribute name that may be in dotted notation.
  *
  * @param callable|string $column name of the column by which the query results should be indexed
  * @return $this
  */
 public function indexBy($column)
 {
     if (!$this->asArray) {
         return parent::indexBy($column);
     }
     /** @var DynamicActiveRecord $modelClass */
     $modelClass = $this->modelClass;
     $this->indexBy = function ($row) use($column, $modelClass) {
         if (isset($row[$column])) {
             return $row[$column];
         }
         $dynamicColumn = $modelClass::dynamicColumn();
         if (!isset($row[$dynamicColumn])) {
             throw new UnknownPropertyException("Dynamic column {$dynamicColumn} does not exist - wasn't set in select");
         }
         $dynamicAttributes = DynamicActiveRecord::dynColDecode($row[$dynamicColumn]);
         $value = $this->getDotNotatedValue($dynamicAttributes, $column);
         return $value;
     };
     return $this;
 }