所以我有一个使用CodeIgniter的后端,它的原生ActiveRecord用于管理我的基本数据对象。 ActiveRecord类添加了一些字段以帮助它找出如何关联对象(即“_class_name”,“_ table”,“_ column”)。当我将这些对象发送到前端时,会包含这些字段。我不想要这个,所以我创建了一个消毒功能,在它们被发送到前端之前取消它们。
现在当我在前端时,angular正在管理我的所有资源,然后我在$资源上调用$ 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库...
谢谢! 莱恩
答案 0 :(得分: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);
}