显示数据名称而不是id属性

时间:2018-02-06 06:38:43

标签: php laravel

我无法获取要在我的索引中显示的名称属性,始终显示错误

  

"函数名称必须是字符串"

控制器

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

这是错误

enter image description here

注意:但如果我将此 {{$ account-&gt; student-&gt; studentname}} 更改为此 {{$ account-&gt; Student_id}} 它工作,但只显示id而不是名称。

1 个答案:

答案 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>