Laravel 8 - 获取数据一对多关系

Laravel 8 - Get Data One to Many Relation

我在获取数据时遇到问题

这是我的代码 控制器

$class = DetailMentor::with('Kelas')->where('id', Auth::user()->id)->get(); 

型号:


    protected $primaryKey = 'id_mentor';

    protected $fillable = [
        'id',
        'id_kelas',
    ];

    public $timestamps = true;

    public function Kelas()
    {
        return $this->hasMany(Kelas::class, 'id_kelas','id_kelas');
    }

    public function User()
    {
        return $this->belongsTo(User::class, 'id','id');

查看索引

 <tbody>
                                     
 @forelse ($class->Kelas as $item)
 <tr role="row" class="odd">
   <th scope="row" class="small" class="sorting_1">{{ $loop->iteration}}.</th>
   <td>{{ $item->nama_kelas }}</td>
   <td>{{ $item->Jeniskelas->jenis_kelas }}</td>
   <td>{{ $item->level->nama_level }}</td>
   <td class="text-center">
       @if ($item->status_video == 'Telah Dibuat')
          <span class="badge badge-success ">Telah Dibuat</span>
       @else
          <span class="badge badge-danger">Belum Dibuat</span>
       @endif
   </td>
   </tr>
 @empty
                                        
 @endforelse
                                        
</tbody>

错误: 属性 [Kelas] 在此集合实例上不存在。 (视图: C:\laragon\www\Bootcamp\resources\views\mentor\listkelas\index.blade.php)

我想按 id 对数据 kelas 进行分组。如果我使用 first 它只需要一个数据,如果我使用 get 它说错误。有谁可以帮助我吗!我是新手

[图片:数组Return$class][1] [1]: https://i.stack.imgur.com/0fjIj.png

首先确保数据是否正确 在 postmanbrowser 上测试它,你可以使用方法 dd() 所以如果数据正确

看到的问题index.blade.php
我认为它适用于 first 方法,因为你得到一个对象(一条记录)

并且它不适用于 get 方法,因为它获取对象数组,因此显示此数组的方式与一个对象不同

确定显示方式并使用foreach in index.blade.php

希望对你有帮助

更新:

        @foreach ($class as $item)
         <tr role="row" class="odd">
         <th scope="row" class="small" class="sorting_1">{{ $loop->iteration}}.</th>
         <td>{{ $item->kelas[0]->nama_kelas }}</td>
         <td>{{ $item->kelas[0]->Jeniskelas->jenis_kelas }}</td>
         <td class="text-center">
       @if ($item->kelas[0]->status_video == 'Telah Dibuat')
          <span class="badge badge-success ">Telah Dibuat</span>
       @else
          <span class="badge badge-danger">Belum Dibuat</span>
       @endif
   </td>
   </tr>
                                                               
     @empty

     @endforeach

你可以这样访问$item->kelas[0]->nama_kelas