laravel - 在视图上显示数据时尝试获取非对象的属性“column_name”
问题描述
我想在我的刀片视图上显示来自关系数据的数据,但是当我试图显示数据时,表只包含一行数据,它显示在视图中,但是如果我在表中插入多个数据,它会给我一个错误。
我有三张桌子courses
,,,sections
。course_section
在course_section
表中,这些是以下列course_id
和section_id
。
我已经{{ $section->courses()->first()->courseTitle }}
在stackoverflow上找到了这个片段。
我的部分型号代码:-
class section extends Model
{
public function courses(){
return $this->belongsToMany('App\Model\admin\course\course','course_sections','course_id');
}
}
我的部分控制器代码:-
$sections = section::with('courses')->orderBy('id','DESC')->get();
return view('backend.courses.section.all',compact('sections','courses'));
我的查看代码:-
@foreach ($sections as $section)
<tr>
<td>{{ $section->title }}</td>
<td>{{ $section->courses()->first()->courseTitle }}</td>
</tr>
@endforeach
我收到此错误
“试图获取非对象的属性‘courseTitle’(查看:resources/views/backend/courses/section/all.blade.php)”
解决方案
以下是您做错的事情:
替换
$section->courses()
为$section->courses
您已经在进行早期加载。并将$section->courses()
再次查询到 db。检查关系数据是否存在然后显示。
所以你的代码如下:
@foreach ($sections as $section)
<tr>
<td>{{ $section->title }}</td>
<td>
@php
$course = $section->courses->first();
@endphp
{{ $course->courseTitle or "" }}
</td>
</tr>
@endforeach
让我知道它是否有帮助!
编辑:
根据对话,关系已经改变course ->hasMany -> sections
,section ->belongsTo -> course
所以刀片也会改变。
@foreach ($sections as $section)
<tr>
<td>{{ $section->title }}</td>
<td>
@php
$course = $section->course;
@endphp
{{ $course->courseTitle or "" }}
</td>
</tr>
@endforeach
推荐阅读
- swift - 我可以在 Coordinator 中使用 ObservedObject 吗?
- javascript - getComputedStyle引起的很多dom回流操作如何优化?
- node.js - 使用 Node JS 更新网页上的串口数据
- python - 如果匹配多个值,则在 Pandas 数据框中删除行
- python - 在文本文件中搜索多行字符串并在 Python 中返回行号
- python - 使用 Popen 通信看到乱码输出
- c++ - C ++试图将类传递给另一个类的构造函数
- matplotlib - Matplotlib:带有log base 2 colorbar的奇怪小刻度
- django - django + aws 用于物联网记录和数据渲染
- c - SSL_set_connect_state 和 SSL_connect 之间的区别