在Laravel 5.7中更新API

时间:2019-03-11 06:25:56

标签: api laravel-5.7

我已经创建了更新我的项目详细信息的API,我在POSTMAN应用中对其进行了测试,它显示了成功消息,但在数据库中没有任何作用。
这是我的代码:

ProjectsController.php

public function UpdateProject($id)
{
    $data = Input::all();
    $q = Project::where('id',$id)->update($data);
    return response()->json([
        'code' => SUCCESS,
        'message' => 'Project data update successfully'
    ]);
}

api.php

Route::post('UpdateProject/{id}','ProjectsController@UpdateProject');

邮递员-see image

邮递员的输出:

{
    "code": "200",
    "message": "Project data update successfylly"
}

有人可以帮我吗?
谢谢

4 个答案:

答案 0 :(得分:2)

我认为您需要仔细检查所有输入的详细信息,提交表单时还附带令牌,因此您需要保存除令牌以外的所有详细信息

更改此

$data = Input::all();

对此

$data = Input::except('_token');

我希望这可以解决问题。

答案 1 :(得分:0)

在模型中添加可填充

protected $fillable = ['name', 'project_group_id','number','ROM','address','city','state','zip','start_date','end_date','duration','description','timeline_type','project_type_id','project_category_id','office_id'];

答案 2 :(得分:0)

您已忘记在更新数据后运行->save()方法:

public function UpdateProject($id)
{
    $data = Input::all();

    $q = Project::find($id)
    $q = $q->fill($data);
    $q->save();

    return response()->json([
        'code' => SUCCESS,
        'message' => 'Project data update successfully'
    ]);
}

答案 3 :(得分:0)

您可以使用此方法来减少代码

路线(api)

Route::post('UpdateProject/{project}','ProjectsController@UpdateProject');

ProjectsController.php

public function UpdateProject(Request $request, Project $project)
{
    $data = $request->all();
    $project->update($data);
    return response()->json([
        'code' => SUCCESS,
        'message' => 'Project data update successfully'
    ]);
}