public function envelope(NgModelBase $model) { /** @type ModelMetaData $modelsMetadata */ $modelsMetadata = $model->getModelsMetaData(); $data = array(); $data['id'] = (int) $model->getId(); $publics = $model::getPublicFields(); $fields = $modelsMetadata->getDataTypes($model); foreach ($publics as $field) { if (!isset($fields[$field])) { continue; } $func = sprintf("get%s", ucfirst($field)); switch ($fields[$field]) { case 0: $data[$field] = (int) $model->{$func}(); break; default: $data[$field] = $model->{$func}(); } } return $data; }
private function fetchRelationUsingModelsManager(NgModelBase $model) { /** @var ModelManager $modelsManager */ $modelsManager = $model->getModelsManager(); foreach ($modelsManager->getBelongsTo($model) as $relation) { $this->belongsTo($relation); } foreach ($modelsManager->getHasMany($model) as $relation) { $this->hasMany($model, $relation); } foreach ($modelsManager->getHasOne($model) as $relation) { $this->hasOne($model, $relation); } }