2014-11-02 66 views
0

你好Stackoverflowers,用Laravel的Eloquent创建条目

我目前正在开发一个Laravel 4.2的网页。我自己管理好几个问题,但现在我坚持这一点。我试着为我的MySQL-表structures创建一个新的数据库条目。连接问题可以排除。

所有的连接似乎都有效,因为所有的连接都返回一个200-的HTTP状态 - 好吧,也许更有经验的开发人员可以帮助我!命名空间是可以的,所有的类都是可访问的。非常感谢提前!

问题是:为什么控制器不向数据库中插入任何数据。我是否使用错误的控制器功能create或者我是否以错误的方式使用它?

Structures模型文件中/app/models/db/Structures.php

namespace Database; 
class Structures extends \Eloquent { 
    protected $table='structures'; 
    protected $protected = array(); 
} 

在/app/controllers/admin/api/StructuresController.php相应控制器(命名空间控制器\联系\ API问题可已排除)

public function create($data = null) 
{ 
    Structures::create($data)->save(); 
    return Response::json(array('success' => true)); 
} 

我打电话上面有$http - 服务的控制器在个AngularJS

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

你有什么问题吗? – charlietfl 2014-11-02 12:36:45

+0

更新了条目。我不确定有什么问题。我是否以错误的方式使用控制器? – barfoos 2014-11-02 12:41:10

+0

我不认为这是造成问题,但如果你使用'create()',你不需要调用'save()'它会自动插入数据库 – lukasgeiter 2014-11-02 12:52:49

回答

0

现在,我发现了几个问题,导致一个大事件。正如假设的那样,命名空间,数据库迁移和$http-服务已正确配置。非常感谢@lukasgeiter。

第一问题,我发现是,在AngularJS$http - 服务电话:

$http({ 
    method: 'POST', 
    url: 'admin/api/structures', 
    headers: { 'Content-Type' : 'application/x-www-form-urlencoded' }, 
    data: $.param(structureData) 
}) 

...调用函数店()StructureController(请参阅我的路线.php提取以上)

问题我发现是我的模型白名单。我填写了$fillable -array()和我想要修改的所有列。

protected $fillable = ['title', 'page-id', 'type', 'order', 'class', 'src', 'figcaption', 'text', 'data']; 

最后问题我发现了,那create -function可以通过我的PagesController(AngularJS)的Structure.get()作为PARAM给出填充数据。

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 { 
... 
}