显示具有多对多关系的数据 laravel 6

Displaying data with many to many relationship laravel 6

我是 laravel 6 的初学者。我只是想问问。我想显示数据但是显示不出来

index.blade.php:

@if(isset($teachers))
  @foreach($teachers->qualifs as $qualif)
      <li>{{ $qualif->qual }}</li>
  @endforeach
@endif

控制器:

public function index()
{
  $teachers= DB::table('teachers')->first();
  $qualifs = DB::table('qualifs')->find($teachers->id);
  return view('teachers.index',compact('teachers','qualifs'));
}

qualif.php:

public function teachers()
{
  return $this->belongsToMany('todolist\teacher', 'qualif_teachers');
}

teacher.php:

public function qualifs()
{
  return $this->belongsToMany('todolist\qualif', 'qualif_teachers'); 
}

注意:数据存储正确,只是显示问题。

ERROR:Undefined property: stdClass::$qualifs

关系属于模型实例,这意味着 eloquent 对象。当您使用查询生成器时,您将获得 stdObject 而不是 eloquent 对象。因此,您的关系不起作用。要完成这项工作,您必须使用 eloquent 而不是查询生成器。

public function index()
{
    $teachers= teacher::get();
    return view('teachers.index',compact('teachers'));
}

视图会像

@foreach($teachers as $teacher)
    @foreach($teacher->qualifs as $qualif)
        <li>{{ $qualif->qual }}</li>
    @endforeach
@endforeach