Laravel Vue中的500服务器内部错误

时间:2018-08-17 08:50:43

标签: laravel vue.js controller axios

更新时出现错误。

app.js

  approveleave() {
    var idapprove = document.getElementById("leave_id").value;
     alert(idapprove);
    axios.post('/approveleave/' + idapprove)
      .then(response => {
      this.showModal=false;
      this.getleaveItems(); //view list
      });
      // this.leave = true;
      this.update = true;
  },

controller.php

public function requestApproveLeave(Request $request, $id){
 $leavedata = LeaveRequest::where('leave_id', $id);

  if($leavedata->head == 'pending' ){
    $leavedata->head = 'approved';
    // $data->hr = 'approved';
    $leavedata->save();
    return $leavedata;
  }else{
  return $leavedata;
  } 
}  

public function requestLeave(){

  $leaveIds = DB::select('SELECT * FROM leave_requests lr INNER JOIN users u ON lr.user_id = u.id');

  return  $leaveIds;

}

我在view.blade.php中有一个按钮,该按钮将更新为批准。发生的是,当我单击并签入控制台时,出现了500 server internal error。我的路线,控制器和getleaveItems正常工作。

1 个答案:

答案 0 :(得分:0)

在您的控制权之内

$leavedata = LeaveRequest::where('leave_id', $id);

这时$ leavedata只是查询生成器的一个实例,因此低于该点的任何尝试访问检索到的模型属性的代码都将失败

根据当前设置,您应该在末尾添加firstOrFail()。

$leavedata = LeaveRequest::where('leave_id', $id)->firstOrFail();

因此,如果找不到记录,该方法将安全地中止并返回404错误。