Laravel中的多对多关系,从相关表中检索数据并显示在刀片​​中

时间:2020-02-09 17:14:53

标签: laravel laravel-blade

在Laravel Framework中,我有两个表之间存在多对多关系。我可以分别显示每个表中的数据,但不能通过关系显示,方法是从第一张表中获取一条记录并检查第二张表中的相关记录。修补后,它可以很好地访问数据。

关系:

public function underperformances() {
        return $this->belongsToMany(Underperformance::Class);
    }
...
  public function procedures() {
        return $this->belongsToMany(Procedure::class);
    }

我的资源控制器部分:

...
use App\Underperformance;
use App\Procedure;
...

public function index()
  {
       $books = Underperformance::orderBy('id','desc')->paginate(9);
       $procedures = Procedure::all();
       return view('underpcon.underps', compact('books', 'procedures'));
   }

路线:

Route::get('/underps', 'UnderpsController@index');

如果我尝试显示如下数据:

@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances}}</li>
 @endforeach

我在浏览器中看到了这样的格式:

[{"id":1,"title":"Spare part not taken before service","description":"tekstas","level":"1","costs":600 ...

这是来自相关表的正确数据,但是我无法从该表中进一步选择特定列。例如,这不起作用:

@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances->id}}</li>
 @endforeach

也不是这个

 @foreach ($procedures->underperformances as $underperformance) 
 <li>{{$underperformance->id}}</li>
@endforeach
  1. 如何选择相关表的记录并显示该表中的特定数据?
  2. 执行此操作的常规方法是什么?

1 个答案:

答案 0 :(得分:0)

@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances->id}}</li>
 @endforeach

^在此$procedure->underperformances处将返回一个集合,而不是单个项目,因此您需要将其视为数组,您将无法访问{{1} },您可以id,也可以使用Laravel Collections中的@foreach方法。