输入消毒Laravel 4

时间:2014-10-30 16:07:21

标签: javascript php angularjs rest laravel

我正在使用Laravel 4为我的AngularJS应用程序创建一个RESTful界面。

目前,我想更新一个对象。我的模型被称为Discount Link我这样做的方式是:

    $data = Input::all();
    $affectedRows = DiscountLink::where('id', '=', $id)->update($data);

(请想象有一些验证检查)

我在laravel.log

中收到错误消息
General error: 1 no such column: $edit

编辑是传递给我的服务器的值,因为它是通过angular添加的。我没有看到需要在我的JS中明确删除它,所以我的问题是:

如何创建我的模型会注意的某种键名白名单。这样,即使偶然传递了一些东西,REST调用也不必失败。

我想在JS中存在消毒的参数,但是我会用许多可能变得混乱的去赋值语句来污染我的代码,特别是在处理AngularJS时:

delete discountLink.$edit;

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

$data = Input::all();
$discountLink = DiscountLink::find($id);
$discountLink->fill($data);
$discountLink->save();

此方法正常运行。但是您的可填写/保护属性必须设置正确。

更新:

新方法:

$data = Input::all();
$data['id'] = $id;
$genre = new Genre;
$genre->exists = true;
$genre->update($data);

据我所知,这是1个查询。