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
首先确保数据是否正确 在 postman 或 browser 上测试它,你可以使用方法 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
我在获取数据时遇到问题
这是我的代码 控制器
$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
首先确保数据是否正确 在 postman 或 browser 上测试它,你可以使用方法 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