Данные не сохраняются в базе данных.Ларавелла с Аяксом - PullRequest
0 голосов
/ 09 октября 2018

У меня проблема «новая для меня», так как я смог сохранить данные в базе данных, но теперь не могу.Я пропускаю некоторые поля через ajax, и это работало хорошо, но теперь это не так.

Вот мой код контроллера:

public function update_os(Request $request)
{
    $this->validate($request, [
      'os' => 'required|max:50'
    ]);
    $user = User::find(Auth::id());
    $user->fill([
      'os' => $request->os
    ]);
    return response()->json($user);
}

Теперь это мой код ajax:

$(document).on('submit', '#AjaxFormOs', function (event) {
    event.preventDefault();
    var os = $('#AjaxFormOs').serializeArray();
    $.ajax({
        method: 'post',
        url: userUrl + 'updateos',
        data: os,
        _token: token,
        dataType: 'json'
    })
    .done(function (operative) {
        toastr.info("Your new OS is: " + operative.os + "", 'You have been updated your OS info.', {timeOut: 5000});
        $('#os-cancel').addClass('hide');
        $('#os').addClass('hide');
        $('#user-os').removeClass('hide');
        $('.user-info-content').find('#user-os').html(operative.os);
        $('#os-edit').removeClass('hide');
    });
});

Это маршрут:

Route::post('/{username}/updateos', 'Account\ProfileController@update_os');

Это форма:

<form id="AjaxFormOs">
    {{ csrf_field() }}

    <ul class="list-inline p-r-10 user-info-details-form">
        <li><strong>OS</strong></li>
        <li class="m-l-20 p-b-10" id="user-os">{{ $user->os }}</li>
        <li>
            <input id="os" type="text" class="form-control hide user-input-field" name="os" value="{{ $user->os }}" autofocus>
            <button type="submit" class="hide"></button>
        </li>
        <li class="pull-right"><a href="#" id="os-edit">Edit</a></li>
        <li class="pull-right"><a class="hide" href="#" id="os-cancel">Cancel</a></li>
    </ul>
</form>

Это ответ "из инструментов разработчика Google Chrome"

Request URL: http://centralgeek.test/9/updateos
Status Code: 200 OK

{id: 9, name: "José", last_name: "Martínez", username: "josem", 
gender: "Hombre", os: "Ubuntu",…}
about: null
background: "def-background.jpg"
city: "Curicó"
country: "Venezuela"
created_at: "2018-10-09 00:32:45"
deleted_at: null
email: "josem@app.com"
gender: "Hombre"
id: 9
job_title: "¿A qué te dedicas?."
last_login_at: "2018-10-09 00:32:45"
last_login_ip: "127.0.0.1"
last_name: "Martínez"
name: "José"
os: "Ubuntu"
phone_model: null
profilepic: "default.png"
twitter: null
twitter_link: null
updated_at: "2018-10-09 01:21:41"
user_agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 
(KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36"
username: "josem"

Как вы можете видеть, данные OS, которые я передал, "ubuntu", но как только я обновляю окно, информация исчезает ... Не хранится в базе данных, но работала раньше.Так что же происходит?

1019 * Заранее спасибо.

1 Ответ

0 голосов
/ 09 октября 2018

Вы только заполнили экземпляр user новыми данными.

$user->fill([
  'os' => $request->os
]);

Но не сохранили в базу данных.

$user->save();

Альтернатива

Альтернатива этой комбинации функций fill() и save(),
Вы можете использовать обновление.

$user->update([
    'os' => $request->os
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...