Hello Stackoverflowers,
我目前正在使用Laravel 4.2开发网页。我自己管理了几个问题,但现在我已经坚持了。我试图为我的MySQL-Table structures
创建一个新的DB条目。可以排除连接问题。
所有连接似乎都有效,因为所有连接都返回200-HTTP状态 - 好的,也许更有经验的开发人员可以帮助我!命名空间是可以的,所有类都是可访问的。非常感谢提前!
问题是:为什么Controller不会将任何数据插入数据库。我使用错误的Controller-Function create
还是我以错误的方式使用它?
/app/models/db/Structures.php中的Structures
模型文件
namespace Database;
class Structures extends \Eloquent {
protected $table='structures';
protected $protected = array();
}
/app/controllers/admin/api/StructuresController.php中的相应控制器(可以排除命名空间Controllers \ Admin \ API问题)
public function create($data = null)
{
Structures::create($data)->save();
return Response::json(array('success' => true));
}
我在 AngularJS
中使用$http
- 服务呼叫上方的控制器
angular.module('PagesService', [])
.factory('Structure', function($http) {
return {
save : function(structureData) {
return $http({
method: 'POST',
url: 'admin/api/structures',
headers: { 'Content-Type' : 'application/x-www-form-urlencoded' },
data: $.param(structureData)
});
}
}
})
这是服务
的相应控制器angular.module('PagesController', [])
.controller('StructureController', function($scope, $http, Structure) {
$scope.newStructure = function() {
Structure.save({
'title': "Änderbar",
'type': "markdown",
'page-id': 1,
'order': 3,
'class': '',
'text': "Testtext"
})
.success(function(data) {
...
})
.error(function(data) {
console.log(data);
});
return false;
}
});
routes.php
文件(摘录)
Route::resource('admin/api/structures', 'Controllers\Admin\API\StructuresController');
答案 0 :(得分:1)
现在,我发现了一些导致一个大问题的问题。假设,命名空间,数据库迁移和$http
- 服务已正确配置。非常感谢@lukasgeiter。
我发现第一个问题是 AngularJS 中的$http
- 服务电话,如:
$http({
method: 'POST',
url: 'admin/api/structures',
headers: { 'Content-Type' : 'application/x-www-form-urlencoded' },
data: $.param(structureData)
})
...在我的StructureController
中调用 store()函数(请参阅上面的routes.php摘录)
我发现的第二个问题是我的模型白名单。我用$fillable
- array()填充了我想要修改的所有列。
protected $fillable = ['title', 'page-id', 'type', 'order', 'class', 'src', 'figcaption', 'text', 'data'];
我发现的最后问题是create
- 函数可以填充数据,由我Structure.get()
中的PagesController
作为参数给出(AngularJS)。
Structures::create(
array(
'title' => Input::get('title'),
'page-id' => Input::get('page-id'),
'type' => Input::get('type'),
'order' => Input::get('order')
)
);
请请确保将Illuminate\Support\Facades\Input
类添加到控制器顶部,如:
namespace ...;
use ..., Illuminate\Support\Facades\Input;
class StructuresController extends \BaseController {
...
}