首页 > 解决方案 > 模型 [App\\User] {id} 没有查询结果

问题描述

我正在尝试使用 ajax 在 laravel 中更新我的用户,但我收到此消息No query results for model [App\User] {id}这意味着什么以及如何解决此错误

我的控制器代码是

public function update(Request $request, $id) {
        $user = User::findOrFail($id);
        $user->name = $request->name;
        $user->phone = $request->phone;
        $user->email = $request->email;
        $user->country = $request->country;
        $user->state = $request->state;
        $user->purpose = $request->purpose;
        $user->package = $request->package;
        $user->months = $request->months;
        $user->quantity = $request->quantity;
        $user->amount = $request->amount;
        $user->expiry_date = $request->expiry_date;
        $user->save();
        return response()->json($user);
}

我的刀片文件代码是

<form id="editFormId">
                    <input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
                    <h2>Order Information</h2>
                    <div class="row">   
                        <input type="hidden" value="{{ $userinformations[0]->id }}" name="id" id="id">      
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="package">{{ __('Package') }}</label>
                                <select id="package" name="package" class="form-control  @error('package') is-invalid @enderror" value="{{ old('package') }}" required autocomplete="package" autofocus>
                                     @foreach($userinformations as $userinformation)
                                        <option value="{{ $userinformation->package }}" <?php if(isset($_GET['package']) == '{{ $userinformation->package }}') echo 'selected'; ?>>{{ ucfirst($userinformation->package) }}</option>
                                     @endforeach
                                    <option value="basic">Basic</option>
                                    <option value="regular">Regular</option>
                                    <option value="infinite">Infinite</option>
                                </select>
                                @error('package')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                                @enderror
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="months">{{ __('Months') }}</label>
                                <select id="months" name="months" class="form-control @error('months') is-invalid @enderror" value="{{ old('months') }}" required autocomplete="months" autofocus>
                                    @foreach($userinformations as $userinformation)
                                        <option value="{{ $userinformation->months }}" <?php if(isset($_GET['months']) == '{{ $userinformation->months }}') echo 'selected'; ?>>{{ $userinformation->months }} Months</option>
                                     @endforeach
                                    <option value="1">1 months</option>
                                    <option value="4">4 months</option>
                                    <option value="12">12 months</option>
                                </select>
                                @error('months')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                                @enderror
                            </div>
                        </div>
                        <div class="col-md-3">
                            <div class="form-group">
                                <label for="quantity">{{ __('Quantity') }}</label>
                                <select id="quantity" name="quantity" class="form-control @error('quantity') is-invalid @enderror" value="{{ old('quantity') }}" required autocomplete="quantity" autofocus>
                                    <option value="1" selected="selected">1</option>
                                    <option value="2">2</option><option value="3">3</option>
                                    <option value="4">4</option><option value="5">5</option>
                                    <option value="6">6</option><option value="7">7</option>
                                    <option value="8">8</option><option value="9">9</option>
                                    <option value="10">10</option>
                                </select>
                                @error('quantity')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                                @enderror
                            </div>
                        </div>
                        <div class="col-md-3 ">
                            <label for="amount">{{ __('Amount') }}</label>
                            <div class="input-group">
                                <span class="input-group-addon">INR</span>
                                <select id="amount" name="amount" class="form-control @error('amount') is-invalid @enderror" value="{{ old('amount') }}" required autocomplete="amount" autofocus>
                                    @foreach($userinformations as $userinformation)
                                        <option value="{{ $userinformation->amount }}" <?php if(isset($_GET['amount']) == '{{ $userinformation->amount }}') echo 'selected'; ?>>{{ $userinformation->amount }}</option>
                                    @endforeach
                                    <option>Select Amount</option>
                                    <option value="2500" data-package="basic">2500</option>
                                    <option value="4000" data-package="basic">4000</option>
                                    <option value="7000" data-package="basic">7000</option>
                                    <option value="3500" data-package="regular">3500</option>
                                    <option value="7000" data-package="regular">7000</option>
                                    <option value="12000" data-package="regular">12000</option>
                                    <option value="15000" data-package="infinite">15000</option>
                                    <option value="30000" data-package="infinite">30000</option>
                                    <option value="50000" data-package="infinite">50000</option>
                                </select>
                            </div>
                        </div>
                    </div>

                     <hr>
                     <h2>Billing Information</h2>

                    <div class="row">
                        <div class="col-md-6 form-group">
                            <label for="name">{{ __('Name') }}</label>

                            <input id="name" type="text" class="form-control @error('name') is-invalid @enderror" name="name" value="{{ $userinformations[0]->name }}" required autocomplete="name" autofocus disabled>

                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>   
                        <div class="col-md-6 form-group">
                            <label for="phone">{{ __('Phone') }}</label>
                            <input id="phone" type="text" class="form-control @error('phone') is-invalid @enderror" name="phone" value="{{ $userinformations[0]->phone }}" required autocomplete="phone" disabled>

                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror

                        </div> 

                    </div>



                    <div class="row">
                        <div class="col-md-6 form-group">
                            <label for="country">{{ __('Country') }}</label>
                            <input id="country" type="text" class="form-control @error('country') is-invalid @enderror" name="country" value="{{ $userinformations[0]->country }}" required autocomplete="country" autofocus disabled>

                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="col-md-6 form-group">
                            <label for="state">{{ __('State') }}</label>
                            <input id="state" type="text" class="form-control @error('state') is-invalid @enderror" name="state" value="{{ $userinformations[0]->state }}" required autocomplete="state" autofocus disabled>

                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror

                        </div>
                    </div>    
                    <div class="row">
                        <div class="col-md-6 form-group">
                            <label for="purpose">{{ __('Purpose') }}</label>
                            <select id="purpose" class="form-control @error('purpose') is-invalid @enderror" name="purpose" value="{{ old('purpose') }}">
                                @foreach($userinformations as $userinformation)
                                    <option value="{{ $userinformation->purpose }}" <?php if(isset($_GET['purpose']) == '{{ $userinformation->purpose }}') echo 'selected'; ?>>{{ $userinformation->purpose }}</option>
                                @endforeach
                                <!---option>Select Purpose</option>
                                <option value="parent">Parent</option>
                                <option value="employmee">Employmee</option---->
                            </select>
                            @error('name')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                        <div class="col-md-6 form-group">
                            <label for="email">{{ __('E-Mail Address') }}</label>
                            <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $userinformations[0]->email }}" required autocomplete="email" disabled>
                            @error('email')
                                <span class="invalid-feedback" role="alert">
                                    <strong>{{ $message }}</strong>
                                </span>
                            @enderror
                        </div>
                    </div>    

                    <div class="form-group row mb-0">
                        <div class="col-md-6 offset-md-4">
                            <!---button type="submit" class="btn btn-primary">
                                {{ __('Register') }}
                            </button---->
                            <a href="javascript:void(0)" class="btn btn-sm btn-primary float-right buy_now" data-amount="1" data-id="1">Make Payment</a> 
                        </div>
                    </div>
            </form>

路线是

Route::put('update/{id}', 'razorpay\PaymentController@update');

我的ajax请求是

 <script>
   var SITEURL = 'http://localhost:8000/update/{user}';
   //alert('SITEURL');
   $.ajaxSetup({
    headers: {
   'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
  }
  }); 
 $('body').on('click', '.buy_now', function(e){
 var totalAmount = $(this).attr("data-amount");
 var product_id =  $(this).attr("data-id");

 var options = {
 "key": "***********",
 "amount": (totalAmount*100), // 2000 paise = INR 20
 "name": "AddSpy",
 "description": "Payment",
 "image": "http://localhost:8000/frontend/images/addspy1.png",
 "handler": function (response){
     $.ajax({
       url: SITEURL,
       type: 'post',
       dataType: 'json',
       data: {
        "_token": $('#token').val(),
        razorpay_payment_id: response.razorpay_payment_id , 
         totalAmount : totalAmount ,product_id : product_id,
         name : $('#name').val(),
         phone : $('#phone').val(),
         email : $('#email').val(),
         country : $('#country').val(),
         state : $('#state').val(),
         purpose : $('#purpose').val(),
         package : $('#package').val(),
         months : $('#months').val(),
         quantity : $('#quantity').val(),
         amount : $('#amount').val(),
         password : $('#password').val(),
         expiry_date : $('#expiry_date').val(),

       }, 
       success: function (msg) {

           //window.location.href = 'thank-you';
       }
   });

   },
  "prefill": {
   "contact": '1234567890',
   "email":   'xxxxxxxxx@gmail.com',
  },
  "theme": {
   "color": "#528FF0"
  }
 };
 var rzp1 = new Razorpay(options);
 rzp1.open();
 e.preventDefault();
 });
 </script>

请检查我的代码并更新它。让我知道我错在哪里以及如何纠正。

提前致谢

在此处输入图像描述

标签: ajaxlaravel

解决方案


您必须{user}通过要更新的所需 UserID 进行更改:

var SITEURL = 'http://localhost:8000/update/{user}';

此外,您的代码可以像这样改进:

public function update(Request $request, User $user) {
        // $user = User::findOrFail($id); -- removed
        $user->name = $request->name;
        $user->phone = $request->phone;
        $user->email = $request->email;
        $user->country = $request->country;
        $user->state = $request->state;
        $user->purpose = $request->purpose;
        $user->package = $request->package;
        $user->months = $request->months;
        $user->quantity = $request->quantity;
        $user->amount = $request->amount;
        $user->expiry_date = $request->expiry_date;
        $user->save();
        return response()->json($user);
}
Route::put('update/{user}', 'razorpay\PaymentController@update');

推荐阅读