Laravel 试图获得财产';列名称';在视图上显示数据时显示非对象的

Laravel 试图获得财产';列名称';在视图上显示数据时显示非对象的,laravel,eloquent,laravel-5.8,Laravel,Eloquent,Laravel 5.8,我想在我的刀片视图上显示关系数据中的数据,但当我试图显示数据时,而表中只包含一行数据,它会显示在视图中,但如果我在表中插入多个数据,它会给我一个错误 我有三个表课程,部分,课程。在course\u部分表中,以下列是course\u id和section\u id 我尝试了{{$section->courses()->first()->courseTitle}在stackoverflow上找到的视图中的这个片段 我的分区型号代码:- 类节扩展了模型 { 公共职能课程(){ 返回$this->bel

我想在我的刀片视图上显示关系数据中的数据,但当我试图显示数据时,而表中只包含一行数据,它会显示在视图中,但如果我在表中插入多个数据,它会给我一个错误

我有三个表
课程
部分
课程
。在
course\u部分
表中,以下列是
course\u id
section\u id

我尝试了
{{$section->courses()->first()->courseTitle}
在stackoverflow上找到的视图中的这个片段

我的分区型号代码:-

类节扩展了模型
{
公共职能课程(){
返回$this->belongtomany('App\Model\admin\course\course','course\u sections','course\u id');
}
}
我的分区控制器代码:-

$sections=section::with('courses')->orderBy('id','DESC')->get();
返回视图('backend.courses.section.all',compact('sections','courses');
我的视图代码:-

@foreach($sections作为$section)
{{$section->title}
{{$section->courses()->first()->courseTitle}
@endforeach
我得到了这个错误

“正在尝试获取非对象的属性'CourseTile'(视图: 参考资料/views/backend/courses/section/all.blade.php)

分区控制员:

$sections = section::with('courses')->orderBy('id','DESC')->get();
return view('backend.courses.section.all', compact('sections'));
在视图中,您必须循环各部分,然后循环课程,并创建每一行。例如:

@foreach ($sections as $section)
    @foreach ($section->courses as $course)
          <tr>
            <td>{{ $section->title }}</td>
            <td>{{ $course->courseTitle }}</td>
          </tr>
    @endforeach
@endforeach
并且认为:

@foreach ($courses as $course)
    @foreach ($course->sections as $section)
          <tr>
            <td>{{ $section->title }}</td>
            <td>{{ $course->courseTitle }}</td>
          </tr>
    @endforeach
@endforeach
@foreach($courses as$course)
@foreach($course->sections作为$section)
{{$section->title}
{{$course->courseTitle}
@endforeach
@endforeach

以下是您做错的地方:

  • $section->courses()
    替换为
    $section->courses
    ,因为您已经在进行早期加载。而
    $section->courses()
    将再次查询数据库

  • 检查是否存在关系数据,然后显示

  • 因此,您的代码如下所示:

    @foreach ($sections as $section)
    <tr>
        <td>{{ $section->title }}</td>
        <td>
            @php
               $course = $section->courses->first();
            @endphp
    
            {{ $course->courseTitle or "" }}
        </td>
    </tr>
    @endforeach
    

    您应该为关系执行另一个foreach。我希望在表中显示数据,并一次显示一个课程名称@porloserros我使用了您的解决方案,但它仅重复表中的第一行。所有课程都具有相同的课程名称?也许你应该查询模型课程及其相关信息sections@AbhishekNimbalkar我用另一个选项更新了答案。我不知道我是否理解你想要实现的目标建议不是供进一步讨论的;这段对话已经结束。
    @foreach ($sections as $section)
    <tr>
        <td>{{ $section->title }}</td>
        <td>
            @php
               $course = $section->courses->first();
            @endphp
    
            {{ $course->courseTitle or "" }}
        </td>
    </tr>
    @endforeach
    
    @foreach ($sections as $section)
    <tr>
        <td>{{ $section->title }}</td>
        <td>
            @php
               $course = $section->course;
            @endphp
    
            {{ $course->courseTitle or "" }}
        </td>
    </tr>
    @endforeach