首页 > 解决方案 > 如何在 Laravel 中为当前用户提交信息?

问题描述

在一个 Laravel 项目中,我使用 jQuery Ajax 创建了一个表单,供用户回答几个问题。

问题是我不知道如何将当前用户与此表单相关联。如果我提交表单,它将创建一个新用户。

形式和脚本:

<form action="" method="POST">
  <p id="message"></p>
  <input placeholder="Name" id="full_name" name="full_name">
  <p class="name_error_text"></p>
  <input type="radio" id="1" name="option" value="1">
  <label for="1">1</label><br>
  <input type="radio" id="2" name="option" value="2">
  <label for="2">2</label><br>
  <input type="radio" id="3" name="option" value="3">
  <label for="3">3</label><br>
  <input type="button" value="Submit" id="submit">
</form>
$(document).ready(function() {

  $.ajaxSetup({
    headers: {
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
  });

  //Submit Data
  $("#submit").click(function(e) {
    e.preventDefault();

    var full_name = $("#full_name").val();
    var option = $('input[name="option"]:checked').val();
    var url = '{{ url('
    addoption ') }}';

    if (full_name.length < 1) {
      check_name();
    } else {
      $.ajax({
        url: url,
        method: 'POST',
        data: {
          full_name: full_name,
          option: option
        },
        success: function(response) {
          $("#success").html(response.message)
        },
      });
    }
  });

});

UserController

public function Store(Request $request)
    {


        \DB::table('users')->insert([
            'full_name' => $request->full_name,
            'option' => $request->option,
        ]);

        return response()->json(
            [
                'success' => true,
                'message' => 'Your data has been saved.'
            ]
     );
}

路线:

Route::post('/addoption', 'UserController@Store')->name('option.store');

标签: javascriptjquerylaravel

解决方案


insert 方法用于创建新的数据行,这不是您要寻找的。

您需要在 store 方法中做的是首先使用以下方法查找用户:

$user = User::where('id',auth()->user()->id)->first();

然后你将把你的用户放在 $user 变量中,你可以更改与所述用户关联的“选项”值。

$user->option = $request->option;
$user->full_name = $request->full_name;
$user->save();

return response()->json('success');

推荐阅读