2013-03-22 66 views
0

所以我有一个使用CodeIgniter的后端,它的本地ActiveRecord用于管理我的基本数据对象。 ActiveRecord类添加了几个字段来帮助它找出如何关联对象(即“_class_name”,“_table”,“_columns”)。当我将这些对象发送到前端时,将包含这些字段。我不想这样做,所以我创建了一个消毒功能,在发送到前端之前将其清除。AngularJS资源节约和后端ORM映射

现在,当我在前端,角度管理我所有的资源,并且在$ 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库...

谢谢! Ryan

回答

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> 

controller.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); 
};} 

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); 
} 
+0

感谢法尔汉。看起来像$ this-> db-> update('Class',$ o);可能会诀窍,但我需要删除对象上的所有无关属性,因为update()会手动检查传递它的对象中的属性,尝试将它们设置在数据库中。我可能会编写一些辅助方法来完成所有这些工作,但是如果有人知道可以在这种情况下提供帮助的库,而不需要太多开销,那么请让开发人员知道!谢谢。 – 2013-03-22 20:11:42

+0

只注意到活动记录保存保留了关系,而此db-> update()方法只能处理该单个类的基本属性。 – 2013-03-22 20:20:13