AngularJS 资源节省和后端 ORM 映射

问题描述 投票:0回答:1

所以我有一个使用 CodeIgniter 的后端,及其本机 ActiveRecord 来管理我的基本数据对象。 ActiveRecord 类添加了一些字段来帮助它确定如何关联对象(即“_class_name”、“_table”、“_columns”)。当我将这些对象发送到前端时,这些字段都包含在内。我不想这样,所以我创建了一个清理函数,在将它们发送到前端之前取消它们的设置。

现在,当我在前端时,Angular 正在管理我的所有资源,我去对 $resource 调用 $save() ,它将 json 对象发送到后端。然后在后端我将这个 json 转换为一个对象:

$blob = unserialize(sprintf(
   'O:%d:"%s"%s',
    strlen('Blob'),
    'Blob',
    strstr(strstr(serialize($blob), '"'), ':')));

这会将 json 对象转换为 Blob 类,该类扩展了 ActiveRecord。现在的问题是,由于我在将对象发送到前端之前删除了 ActiveRecord 辅助属性...当我在后端调用 update() 时,由于缺少这些属性,它显然无法正确保存它.

所以我的问题是...是否存在可以帮助完成此过程的东西? 我的基本目标是将最小的 Blob 类发送到前端(没有 ActiveRecord 属性),然后在保存时以某种方式执行一些后端魔法,将准系统 Blob 类重新关联回其 ActiveRecord 版本,以便它可以保存自身。 我不介意研究新的 ORM 库...

谢谢! 瑞安

php angularjs codeigniter orm
1个回答
1
投票

我不确定你是如何实现这一点的。这里有一个关于如何实现这样的事情的示例。

<div class="span2" ng-controller="NewStoryCtrl">
  <h4>New Story</h4>
  <form name="newStory">
      <label for="title">Title: </label>
      <input type="text" name ="title" ng-model="news.title" required>
      <label for="text">Text: </label>
      <textarea type="text" name="text" ng-model="news.text"required></textarea>
      <button ng-click="createNews()">Submit</button>
</form>

控制器.js

function NewStoryCtrl($scope, $http) {
$scope.news = {title:$scope.title, text:$scope.text};
$scope.createNews = function(){
    $http.post('/ci/index.php/news/create/',$scope.news);
};}

新闻.php

public function create() {
   $data = json_decode(file_get_contents('php://input'), TRUE);
   $this->news_model->set_news($data);
}

newsModel.php

public function set_news($data) {
    $this->load->helper('url');
    $slug = url_title($data['title'], 'dash', TRUE);

    $retval = array(
        'title' => $data['title'],
        'slug' => $slug,
        'time' => time(),
        'text' => $data['text']
    );

    return $this->db->insert('news', $retval);
}
© www.soinside.com 2019 - 2024. All rights reserved.