首页 > 解决方案 > 如何在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);

输出:

在此处输入图像描述

标签: laravellaravel-5.4

解决方案


您的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>
...

推荐阅读