【问题标题】:if else statement in the controller not responding in Laravel控制器中的 if else 语句在 Laravel 中没有响应
【发布时间】:2018-06-27 11:22:55
【问题描述】:

我试图通过在我的控制器中使用此方法来阻止登录用户访问某些段落异常用户在 NextofKin 表中拥有他的信息

public function checkValidTenant($tenant_id){
    $check = NextOfKin::where('tenant_id', '=', $tenant_id)->findOrFail('tenant_id');
    return $check;
}

在显示此类页面的方法中,我添加了以下代码进行限制

if($this->checkValidTenant(\Auth::user()->id)){
    $rents = RentDue::where('tenant_id', '=', \Auth::user()->id)->get();
    return view('/tenant/rent', compact('rents'));
}else{
    return redirect()->route('tenant/profile');
} 

我也这样试过

if($this->checkValidTenant(\Auth::user()->id) === true){
    $rents = RentDue::where('tenant_id', '=', \Auth::user()->id)->get();
    return view('/tenant/rent', compact('rents'));
}else{
    return redirect()->route('tenant/profile');
}

这是路线

Route::get('rent', 'TenantController@rent');

问题是当我尝试使用满足条件的登录用户访问该页面时,它会抛出以下错误

Sorry, the page you are looking for could not be found. 

但我注意到只有当我删除此限制时才会显示此页面。我该如何解决这个问题?

【问题讨论】:

  • TenantController 中是否存在 rent 函数?
  • @LovepreetSingh 是的,TenantController 中有出租功能

标签: php mysql laravel if-statement controller


【解决方案1】:

findOrFail 在找不到记录时会抛出 404。如果您将该部分更改为getfirst,您可能会得到想要的结果。

public function checkValidTenant($tenant_id){
    $check = NextOfKin::where('tenant_id', '=', $tenant_id)->first();
    return $check;
}

有时,如果找不到模型,您可能希望抛出异常。这在路由或控制器中特别有用。 findOrFailfirstOrFail 方法将检索查询的第一个结果;但是,如果没有找到结果,则会抛出 Illuminate\Database\Eloquent\ModelNotFoundException

Documentation(向下滚动到“未找到异常”部分)

【讨论】:

  • 感谢您的回复。尝试使用 get 或 first 但我得到以下错误 Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_RECOVERABLE_ERROR) 类型错误:传递给 Illuminate\Database\Grammar::columnize() 的参数 1 必须是数组类型,给定字符串,在第 131 行的 /Applications/MAMP/htdocs/dweb/propertyzone/vendor/laravel/framework/src/Illuminate/Database/Query/Grammars/Grammar.php 中调用
  • @Omotola 我需要的不止这些,因为我不知道该错误来自何处。 Google 和 StackOverflow 上也有多次点击以及该错误。不过可能是一个完全不同的问题。
  • 也搜索过解决方案,但没有提供的解决方案对我有用。作为附加信息,在应用程序中有5个页面,一旦登录,用户将被引导到个人资料页面,用户需要填写表格才能访问其他4个页面。创建并链接页面后,它们都显示正常,直到我包含 if 语句。为了实现这个限制,我写了一个方法来检查 NextOfKin 表,看看是否有关于使用tenant_id 列的用户的数据。我希望这会有所帮助,我应该包括表结构
  • @Omotola 是否有错误的堆栈跟踪?如果是这样,您能否检查代码的哪一部分导致此错误?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多