【问题标题】:Cannot acess data from Eloquent: Relationships, as well some data is not retrieved无法从 Eloquent 访问数据:关系以及某些数据未检索到
【发布时间】:2017-07-29 16:10:02
【问题描述】:

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

  • Curso 1 --- * Disciplina.
  • 学科 * -- 1 名教授。

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

View 中的页面将显示:

  • 表 'Curso' 的字段 'nome'。
  • 包含 2 列的 HTML 表格:
    • 表 'Disciplina' 的字段 'nome'。
    • “Professor”表的“nome”字段。

但我有两个问题:

  1. 我得到了我需要的 'Disciplina' 的数据,但其中一些没有显示关联的 'Professor' 的数据。
  2. 当我尝试从“学科”中访问“教授”的“教授”字段时,当我尝试在表格中列出它时出现错误。

我的“纪律”模型

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

我在视图中的表格

<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'

当我尝试显示“Professor”的“nome”字段时,我更改了以下代码:

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

但是当我这样做时,我得到了这个错误“尝试获取非对象的属性”

【问题讨论】:

    标签: laravel laravel-5 eloquent blade


    【解决方案1】:

    以下不正确:

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

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

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

    【讨论】:

    • 谢谢,它成功了。现在我看,我什至不知道为什么我把'id'作为foreign_key。我也将您的答案设置为有用,但我不能,我只能接受。
    猜你喜欢
    • 2019-12-11
    • 2022-07-27
    • 1970-01-01
    • 2016-04-29
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 2023-02-07
    • 1970-01-01
    相关资源
    最近更新 更多