使用Laravel的Eloquent创建条目

时间:2014-11-02 12:33:00

标签: php angularjs laravel-4

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');

1 个答案:

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