由于某种原因,当放置请求发出蜂鸣声时,我的更新方法会将更改保存到数据库中。这是我的更新方法:
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--
答案 0 :(得分:0)
首先,您需要使字段可大规模分配,这可以在模型上通过添加用作白名单的变量$fillable
或作为黑名单的$guarded
来完成,如下所示步骤已经完成,但是请确保您已注册要更新的每个变量。
然后,您必须确保正确填充$request
,并使用与模型属性相同的键和该属性类型的有效值。
您缺少的另一件事是,您的模型仅通过update()
方法在数据库上进行更新。要使更新的模型返回到响应中,您需要再次查询更改,可以使用fresh()
之类的return response()->json($auftragsPosition->fresh(), 200);
方法轻松完成。
希望这对您有所帮助。