无法从Eloquent访问数据:关系,以及某些数据未被检索

时间:2017-03-08 21:38:27

标签: laravel laravel-5 eloquent blade

我想在我的视图中显示来自表之间关系的数据,其关系是:

  • Curso 1 --- * Disciplina。
  • Disciplina * - 1教授。

所有3个表都有'nome'字段

View中的页面将显示:

  • 表'Curso'的字段'nome'。
  • 包含2列的HTML表格:
    • 表'Disciplina'的字段'nome'。
    • 表'教授'的字段'nome'。

但我有两个问题:

  1. 我得到了我需要的“Disciplina”数据,但其中一些没有显示相关“教授”的数据。
  2. 当我尝试在表中列出时,我尝试从'Disciplina'访问'Professor'字段'nome'时出错了。
  3. 我的'Disciplina'模型

    public function professor(){
        return $this->belongsTo('App\Model\Professor','id');
    }
    

    我的控制器

    $curso = Curso::find($id);
    $curso->disciplinas();
    
    foreach ($curso->disciplinas as $key => $disciplina) {
        $disciplina->professor;
    }
    
    return View::make('curso.showCurso')->with('curso', $curso);
    

    我在View中的表

    <tbody>
        @foreach ($curso->disciplinas as $key => $disciplina)
            <tr>
                <td> {{$disciplina->nome}} </td>
                <td> {{$disciplina->professor}} </td>
            </tr>
        @endforeach
    </tbody>
    

    此图显示了该表的一部分,其中第一行未显示教授,其余行显示教授的所有字段。

    Table showing all fields of 'professor'

    当我尝试显示'教授'字段'nome'时,我更改了代码:

    <td> {{$disciplina->professor->nome}} </td>
    

    但是当我这样做时,我收到此错误“试图获取非对象的属性”

1 个答案:

答案 0 :(得分:1)

以下内容不正确:

public function professor(){
    return $this->belongsTo('App\Model\Professor','id');
}

如果disciplinas表包含外键professor_id,那么关系应该只是:

public function professor(){
    return $this->belongsTo('App\Model\Professor');
}