在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
答案 0 :(得分:0)
@foreach($procedures as $procedure)
<li>{{$procedure->underperformances->id}}</li>
@endforeach
^在此$procedure->underperformances
处将返回一个集合,而不是单个项目,因此您需要将其视为数组,您将无法访问{{1} },您可以id
,也可以使用Laravel Collections中的@foreach
方法。