Метод обновления Laravel Put не сохраняет в базе данных - PullRequest
0 голосов
/ 06 июля 2018


По какой-то причине мой метод обновления не сохраняет изменения в базе данных при вызове пут-запроса. Это мой метод обновления:

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 (для получения), работают без проблем.

Запрос выглядит так:

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 голосов
/ 06 июля 2018

Сначала вам нужно сделать поля массово назначаемыми, это можно сделать в вашей модели, добавив переменную $fillable, которая работает как белый список, или $guarded, который является черным списком, похоже, этот шаг уже выполнен позаботьтесь, но убедитесь, что у вас есть все переменные, которые вы пытаетесь обновить, зарегистрированы.

Затем вы должны убедиться, что $request заполнен правильно, с теми же ключами, что и атрибуты модели, и допустимым значением для этого типа атрибута.

Другая вещь, которую вам не хватает, это то, что ваша модель обновляется в вашей базе данных только методом update(). Чтобы заставить обновленную модель возвращать ее в ответе, вам нужно снова запросить изменения, это можно легко сделать с помощью метода fresh(), например return response()->json($auftragsPosition->fresh(), 200);.

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...