Laravel 5.1 - 关系方法必须 return 类型的对象
Laravel 5.1 - Relationship method must return an object of type
我的应用程序接受用户付款,但不允许子帐户看到付款屏幕。
我有一个 Route::group
检查用户是否被允许通过中间件支付。 handle
函数看起来像这样
if(!\Auth::user()->isTeacher)
{
\Auth::logout();
return redirect('/login')->withErrors([$error = 'Sorry there was a problem. Please notify your School']);
}
return $next($request);
和isTeacher()
函数
if($this->school_id) {
$teachers = $this->school->find($this->id)->teachers;
$isTeacher = false;
foreach ($teachers as $teacher) {
if ($teacher->id == \Auth::user()->id) {$teacher = true;}
}
return $isTeacher;
}
最终School关系如下图
return $this->hasOne('App\School', 'id', 'school_id');
我一直收到的错误是
LogicException in Model.php line 2667:
Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
在错误树的一部分??它显示了这个来自中间件
at Model->__get('isTeacher') in MustBeTeacherToMakePayment.php line 19
也就是上面第一行的if语句。
有谁能告诉我我做错了什么吗?这让我抓狂
您正在访问 isTeacher 属性,而不是调用 isTeacher() 函数。 Eloquent 看到该名称的方法并将其标识为应该 return 关系定义的方法。然后你得到错误,因为关系定义方法应该 return Relation object.
你必须更换
if(!\Auth::user()->isTeacher)
和
if(!\Auth::user()->isTeacher())
错误将消失。
我的应用程序接受用户付款,但不允许子帐户看到付款屏幕。
我有一个 Route::group
检查用户是否被允许通过中间件支付。 handle
函数看起来像这样
if(!\Auth::user()->isTeacher)
{
\Auth::logout();
return redirect('/login')->withErrors([$error = 'Sorry there was a problem. Please notify your School']);
}
return $next($request);
和isTeacher()
函数
if($this->school_id) {
$teachers = $this->school->find($this->id)->teachers;
$isTeacher = false;
foreach ($teachers as $teacher) {
if ($teacher->id == \Auth::user()->id) {$teacher = true;}
}
return $isTeacher;
}
最终School关系如下图
return $this->hasOne('App\School', 'id', 'school_id');
我一直收到的错误是
LogicException in Model.php line 2667: Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
在错误树的一部分??它显示了这个来自中间件
at Model->__get('isTeacher') in MustBeTeacherToMakePayment.php line 19
也就是上面第一行的if语句。
有谁能告诉我我做错了什么吗?这让我抓狂
您正在访问 isTeacher 属性,而不是调用 isTeacher() 函数。 Eloquent 看到该名称的方法并将其标识为应该 return 关系定义的方法。然后你得到错误,因为关系定义方法应该 return Relation object.
你必须更换
if(!\Auth::user()->isTeacher)
和
if(!\Auth::user()->isTeacher())
错误将消失。