laravel - 如何在laravel中渲染所有相关数据
问题描述
我是这种情况下的新手,我不想获得“ otmain_many_otline ”的值,但我不知道如何获得它,我想我应该在使用这个 $list->otmain_many_otline[0] 时将它放入数组中-> 目的我只得到第一个数据。我的问题是我不知道如何呈现所有数据的语法?
看法
<table id="example1" class="table table-bordered table-hover">
<thead>
<th>Purpose</th>
</thead>
<tbody>
@foreach($ot_list as $list)
<tr>
<td>
{{$list->otmain_many_otline[0]->purpose}}
</td>
</tr>
@endforeach
</tbody>
</table>
模型
class OTMain extends Model
{
protected $table = 'ot_main';
public function otmain_many_otline(){
return $this->hasMany('App\OTline', 'ot_main_id','id');
}
}
class OTLine extends Model
{
protected $table = 'ot_line';
public function otline_belong_otmain(){
return $this->hasOne('App\OTMain', 'ot_main_id');
}
}
控制器
$ot_list = OTMain::whereIn('created_by', $requestor_list)
->with('otmain_many_otline')
->where('ot_status', 1)
->get();
dd($ot_list);
输出:
解决方案
您的otmain_many_otline
关系hasMany
意味着它将返回您相关对象的集合。请务必阅读有关它们的官方文档。
如果您需要获取第一个相关对象,请使用方法first()
。在你的情况下:
@foreach($ot_list as $list)
<tr>
<td>
{{ $list->otmain_many_otline->first()->purpose }}
</td>
</tr>
@endforeach
如果您需要渲染所有相关对象,您也可以omain_many_otline
使用另一个进行迭代@foreach
:
...
<td>
@foreach ($list->otmain_many_otline as $otline)
<p>{{ $otline->purpose }}</p>
@endforeach
</td>
...
推荐阅读
- sql - 仅选择满足 where 子句 60% 的行 - SQL Server
- android - GPS 位置数据在 Google 地图上显示不正确
- powershell - Powershell 记录到丢失的网络位置:FileStream 不会重新连接/刷新
- python - 如何在 Python 中捕获我的异常引发并再次反弹
- scala - Pyspark 与 Scala 匹配的结构化流式传输版本
- python - 如何更改格式 xticks 标签并保留热图的颜色条
- c++ - 像离散分布这样的随机分布
- javascript - 每次循环迭代运行的函数,而不是仅最后一次
- python - 将 dict 键分配为数据框名称,将值分配为数据框本身
- vue.js - 如何将路由参数作为数字传递?