我无法获取要在我的索引中显示的名称属性,始终显示错误
"函数名称必须是字符串"
控制器
public function index()
{
$accounts = Account::with('student')->get();
return $accounts('Student_id');
$student = Student::find($id, ['id', 'studentname']);
return view('accounts.index',compact('accounts'));
}
模型
protected $fillable = [
'accountname',
'Student_id',
];
public function student() {
return $this->belongsTo(Student::class);
}
查看代码:
<tbody>
@foreach ($accounts as $account)
<tr>
<td>{{ $account->accountname }}</td>
<td> {{$account->student->studentname}}</td>
</tr>
@endforeach
</tbody>
我尝试使用一对多关系显示studentname
而不是Student_id
。
这是错误
注意:但如果我将此 {{$ account-&gt; student-&gt; studentname}} 更改为此 {{$ account-&gt; Student_id}} 它工作,但只显示id而不是名称。
答案 0 :(得分:0)
删除以下行:
return $accounts('Student_id');
$student = Student::find($id, ['id', 'studentname']);
此外,由于您没有使用标准外键名称,因此需要将其添加到定义中:
public function student()
{
return $this->belongsTo(Student::class, 'Student_id');
}
另外,follow Laravel naming conventions最好在我的回购中找到并将Student_id
重命名为student_id
。在这种情况下,您的关系将在不定义外键的情况下工作。
<强>更新强>
您遇到的第三个问题的解决方案是:
<td> {{ optional($account->student)->studentname}}</td>