Laravel放置更新方法不会存储到数据库

时间:2018-07-06 08:51:46

标签: php laravel eloquent


由于某种原因,当放置请求发出蜂鸣声时,我的更新方法会将更改保存到数据库中。这是我的更新方法:

public function update(Request $request, $id){
        $auftragsPosition = auftragsPosition::findOrFail($id);
        $auftragsPosition->update($request->all());
        return response()->json($auftragsPosition, 200);
    }

这是我的路线:

Route::put("/auftragsPositionen/{id}", "AuftragsPositionController@update");

这是我的模特

class auftragsPosition extends Model
{
    protected $primaryKey = "idAuftragsPosition";
    protected $fillable = array('preis_ges_i_rabatt', 'fk_id_auftrag', 'fk_id_artikel');
}

我检查过,键名和列名是否匹配,它们匹配。 我得到200的响应,但是列值没有改变。 我还检查了mySQL数据库,该值仍然相同。 诸如store(用于发布)或show(用于get)的其他方法都可以正常工作。

请求看起来像这样:

PUT /api/auftragsPositionen/52 HTTP/1.1
Host: 127.0.0.1
Origin: chrome-extension://mmdjghedkfbdhbjhmefbbgjaihmmhkeg
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary6hjR70e6Ig6AXOFC
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7
Cookie: XSRF-TOKEN=eyJpdiI6InFSVEdqNEZBWk5UVGczMnBHNHhKVXc9PSIsInZhbHVlIjoiV1FuNFwvaG9MTkpIdzJkUTlqUVRcL09PaHIzbEhrY3dBYVFVRTJUek8xUmhqWnZSUDdtclVkUXVyNldIVXo1NXVyamZlbkVpdmtEVUNDTlBEYUdtT202UT09IiwibWFjIjoiYjEyOTQ3NzZlMDdjZDViZDFhN2RjNTc4NTNmMGJiYzA1NThjMjZmY2I2NjM4ODJkZjk1M2NmZTg5ZjAzOWNhNiJ9; laravel_session=eyJpdiI6IktKcjlRUVg5eE9nVmltbGdrNm1cL2VBPT0iLCJ2YWx1ZSI6IitDMzgzOUN5dlVtQjlDTXc2bzNEZzFEcDB1VXNvSnRreW1VQXAxdDl0d290VW9oS2luOWZmeXBKdllwN3QwN2JHam9CZWpIdUd1WjFxVGNjTTZ4MlRRPT0iLCJtYWMiOiIxOTM1MDg2NTVmODgzODZhMTZmNmE2YmVkYzA3MzBhMzFjY2VlNjVhZGQ2YTc5MGYxMTdiNDdmM2YxYjZkYWQ3In0%3D

------WebKitFormBoundary6hjR70e6Ig6AXOFC
Content-Disposition: form-data; name="fk_id_auftrag"

20
------WebKitFormBoundary6hjR70e6Ig6AXOFC--

1 个答案:

答案 0 :(得分:0)

首先,您需要使字段可大规模分配,这可以在模型上通过添加用作白名单的变量$fillable或作为黑名单的$guarded来完成,如下所示步骤已经完成,但是请确保您已注册要更新的每个变量。

然后,您必须确保正确填充$request,并使用与模型属性相同的键和该属性类型的有效值。

您缺少的另一件事是,您的模型仅通过update()方法在数据库上进行更新。要使更新的模型返回到响应中,您需要再次查询更改,可以使用fresh()之类的return response()->json($auftragsPosition->fresh(), 200);方法轻松完成。

希望这对您有所帮助。

相关问题