/** * Serializes a set of models. * @param array $models * @return array the array representation of the models */ protected function serializeModels(array $models) { list($fields, $expand) = $this->getRequestedFields(); foreach ($models as $i => $model) { if ($model instanceof Arrayable) { $models[$i] = $model->toArray($fields, $expand); } elseif (is_array($model)) { $models[$i] = ArrayHelper::toArray($model); } } return $models; }
/** * 将模型转换为一个数组. * * This method will first identify which fields to be included in the resulting array by calling [[resolveFields()]]. * It will then turn the model into an array with these fields. If `$recursive` is true, * any embedded objects will also be converted into arrays. * * If the model implements the [[Linkable]] interface, the resulting array will also have a `_link` element * which refers to a list of links as specified by the interface. * * @param array $fields the fields being requested. If empty, all fields as specified by [[fields()]] will be returned. * @param array $expand the additional fields being requested for exporting. Only fields declared in [[extraFields()]] * will be considered. * @param boolean $recursive whether to recursively return array representation of embedded objects. * @return array the array representation of the object */ public function toArray(array $fields = [], array $expand = [], $recursive = true) { $data = []; foreach ($this->resolveFields($fields, $expand) as $field => $definition) { $data[$field] = is_string($definition) ? $this->{$definition} : call_user_func($definition, $this, $field); } if ($this instanceof Linkable) { $data['_links'] = Link::serialize($this->getLinks()); } return $recursive ? ArrayHelper::toArray($data) : $data; }