首页 > 解决方案 > 有没有办法更新单个用户完成的不同交易的状态?

问题描述

用户有许多资金交易,我想在单击按钮时将其中一项的状态从待处理更新为活动。我正在使用这个模型:

public function up()
    {
        Schema::create('funds', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->unsignedBigInteger('user_id');
            $table->string('accnumber')->nullable();
            $table->text('Remarks')->nullable();
            $table->text('acc_type')->nullable();
            $table->string('status')->default('pending');
            $table->rememberToken();
            $table->timestamps();

            $table->index('user_id');
        });
    }

然后我使用带有按钮的 foreach 循环创建了 index.blade.php,以将默认状态从挂起更新为活动:

 @foreach($user as $user)
                          <tr>
                            <td> {{ $user->accno }} </td>
                            <td>{{ $user->accnumber }}</td>
                            <td> {{ $user->Remarks }} </td>
                            <td>{{ $user->acc_type }}</td>
                            <td>
                                <input data-id="{{$user->id}}" class="toggle-class" type="checkbox" data-onstyle="success" data-offstyle="danger" data-toggle="toggle" data-on="Active" data-off="InActive" {{ $user->status ? 'pending' : '' }}>
                            </td>
                          </tr>
                        @endforeach
                        </tbody>
                      </table>
                    </div>
                    <!-- /.card-body -->
                </div>
            </div>
        </section>

        <script>
            $(function() {
              $('.toggle-class').change(function() {
                  var status = $(this).prop('pending') == true ? 1 : 0; 
                  var user_id = $(this).data('id'); 

                  $.ajax({
                      type: "GET",
                      dataType: "json",
                      url: '/changeStatus',
                      data: {'status': status, 'user_id': user_id},
                      success: function(data){
                        console.log(data.success)
                      }
                  });
              })
            })
          </script>

我正在从在线教程中执行此操作,并且我想使用此控制器为自己实现此操作:

public function changeStatus(Request $request)
    {
        $user = User::find($request->user_id);
        $funds = $user->Funds()->status;
        $funds = $request->status;
        $user->save();

        return response()->json(['success'=>'Status change successfully.']);
    }

标签: phplaravel

解决方案


如果要更改单个用户的所有事务的状态:

public function changeStatus(Request $request)
{
    $user = User::find($request->user_id);

    $user->Funds()->update(['status', $request->status]);

    return response()->json(['success' => 'Status changed successfully.']);
}

推荐阅读