【问题标题】:ManytoMany relations in Laravel, retrieve data from related tables and display in bladeLaravel 中的多对多关系,从相关表中检索数据并显示在刀片​​中
【发布时间】:2020-05-25 02:38:17
【问题描述】:

我在 Laravel 框架中有两个通过多对多关系关联的表。我可以分别显示每个表中的数据,但不能通过关系从第一个表中获取一条记录并检查第二个表中的相关记录。在修补程序中,它可以正常访问数据。

关系:

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. 执行此操作的常规方法是什么?

【问题讨论】:

  • 请在投反对票时给我澄清,以便我做出改进。

标签: laravel laravel-blade


【解决方案1】:
@foreach($procedures as $procedure) 
  <li>{{$procedure->underperformances->id}}</li>
 @endforeach

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

【讨论】:

  • 有两种模型,UnderperformanceProcedure。表表现不佳程序。数据透视表包含 underperformance_idprocedure_id。所以这可能是问题所在。我会尝试这个修复。
  • 你需要检查$procedure-&gt;underperformances的结果,试试dd($procedure-&gt;underperformances);,我假设它是空的。
  • 转储后返回两条相关记录。但问题是如何从这两个相关记录中选择特定的列。重命名不起作用,laravel 文档提供了一个示例,其中表中的 _id 是单数,关系方法是复数,所以问题不应该是命名?
  • 两条相关记录是什么意思?
  • 啊,我知道我错过了什么,$procedure-&gt;underperformances 不返回单个项目,它返回一个集合,您还需要 @foreach 那个
猜你喜欢
  • 2021-11-30
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 2017-01-17
相关资源
最近更新 更多