【问题标题】:500 server internal error in laravel vuelaravel vue中的500服务器内部错误
【发布时间】:2019-01-24 06:38:45
【问题描述】:

我更新这个时出错了。

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 工作正常。

【问题讨论】:

  • 你在 Laravel 日志中看到了什么异常?
  • @piscator 。我加了这个。 .catch(response => { alert(response.data); }); .它说未定义..我不知道如何使用laravel日志..
  • 它们位于storage/logs 文件夹中。在这里您可以找到 500 内部服务器错误异常。找到异常后,您可以将其添加到您的问题中。
  • laravel.logs 太大了.. 很混乱
  • @piscator 我想这个。找不到列:1054 'where 子句'中的未知列'id'(SQL:更新leave_requests 设置updated_at = 2018-08-17 09:35:36,head = 2 其中id 为空)

标签: laravel vue.js controller axios


【解决方案1】:

在你的控制器中你有

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

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

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

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

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

【讨论】:

  • 。在我的教程中,我已经复制了他这样做。 $leavedata = LeaveRequest::where('leave_id', $id)->first();我想知道那是不是一样
  • @chimichi004 如果你决定使用 first() 然后你应该检查 $leaveData 是否为空,然后继续。
  • 我只是想知道我的axios是否正确并路由。我是否返回 $leaveIds;返回数据的正确方法是什么?
  • 我只想让您在函数 requestLeave() 上签入我的控制器,因为在我编辑之后。我在 requestApproveLeave 中的控制器不起作用。因为那个内部连接。
  • @chimichi004 我看不出你的 axios 有什么问题。至于返回 $leaveIds 的 requestLeave() 函数,我不确定。从您的查询中,我假设“leave_requests”表有一个可以为空的 user_id 字段,并且您执行内部联接以仅返回具有关联用户的 id。所以你可以做 $leaveRequestsHavingUser = LeaveRequest::has('user')->get();如果您在 LeaveRequest 模型中定义了用户关系。如果您只需要 id,则通过在结果上使用 pluck('id') 方法或在初始查询中添加 select('id') 来返回它
猜你喜欢
  • 1970-01-01
  • 2020-05-09
  • 2018-10-16
  • 2014-10-25
  • 2015-08-12
  • 1970-01-01
  • 2017-04-12
  • 2018-08-01
  • 2020-10-01
相关资源
最近更新 更多