Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.1-关系方法必须返回类型为的对象_Php_Laravel_Laravel 5_Eloquent_Relationship - Fatal编程技术网

Php Laravel 5.1-关系方法必须返回类型为的对象

Php Laravel 5.1-关系方法必须返回类型为的对象,php,laravel,laravel-5,eloquent,relationship,Php,Laravel,Laravel 5,Eloquent,Relationship,我的应用程序接受用户付款,但不得允许子帐户查看付款屏幕 我有一个Route::group,它检查是否允许用户通过中间件付款。句柄函数如下所示 if(!\Auth::user()->isTeacher) { \Auth::logout(); return redirect('/login')->withErrors([$error = 'Sorry there was a problem. Please notify your School']); }

我的应用程序接受用户付款,但不得允许子帐户查看付款屏幕

我有一个
Route::group
,它检查是否允许用户通过中间件付款。
句柄
函数如下所示

    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;
}

最后,学校关系如下所示

return $this->hasOne('App\School', 'id', 'school_id');
我一直收到的错误是

Model.php第2667行中的LogicException: Relationship方法必须返回Illumb\Database\Eloquent\Relations\Relationship类型的对象

在错误树的一部分??它显示了这是来自中间件的

在mustbeteachertomakpayment.php第19行中的Model->\uu get('isTeacher')

这是上面第一行的if语句


有人能告诉我我做错了什么吗?这让我抓狂

而不是调用正在访问的isTeacher属性的isTeacher()函数。Eloquent看到该名称的方法,并将其标识为应该返回关系定义的方法。然后您会得到错误,因为关系定义方法应该返回关系对象

你必须更换

if(!\Auth::user()->isTeacher)


错误就会消失。

你的
学校关系是什么样子的?我相信jedrzej.kurylo是正确的,但是我也相信你应该仔细看看你的
isTeacher()
函数。当
$teacher
变为真时,您正在设置未使用的变量,并且可能希望打破该循环。否则,它将继续运行并可能返回false。
if(!\Auth::user()->isTeacher())