我正在尝试进行此查询:
SELECT DISTINCT field_1 FROM Table1
public function ano_semestre()
{
return Turma::distinct()->select('ano_semestre')->get()->toArray();
}
@foreach($professor as $key => $prof)
@foreach($prof->ano_semestre as $semestre)
{{ dd($semestre->ano_semestre) }}
@endforeach
@endforeach
public function getProfessorList()
{
$professor = Professor::all();
return View::make('professor', compact('professor'));
}
我收到了这个错误:
关系方法必须返回类型为Illuminate \ Database \ Eloquent \ Relations \ Relation
的对象
尝试访问时出现错误:
$prof->ano_semestre
答案 0 :(得分:1)
在您看来,您已经访问了ano_semestre
属性,而不是方法。您使用的是$prof->ano_semestre
,而不是$prof->ano_semestre()
。
在Laravel中,当访问Model的属性时,它首先检查该属性是否作为字段存在。如果没有,则检查模型上是否存在与该属性同名的方法。如果是这样,它假定此方法是关系方法,并且关系方法必须返回Relation
对象(如您的错误消息所示)。
您没有将此正确定义为关系方法,并且它看起来不像您尝试的那样。只需确保您正在调用该方法,而不是尝试将其用作属性。将$prof->ano_semestre
更改为$prof->ano_semestre()
。