如何在Laravel中呈现所有相关数据

时间:2018-07-25 07:07:05

标签: laravel laravel-5.4

在这种情况下我是新手,我不会获得“ 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);

输出:

enter image description here

2 个答案:

答案 0 :(得分:1)

您的otmain_many_otline关系为hasMany,这意味着它将返回您相关对象的集合。确保阅读official documentation on them

如果需要获取第一个相关对象,请使用方法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>
...

答案 1 :(得分:1)

您可以简单地执行以下操作:

@foreach($ot_list as $list)
<tr>
 <td>
    @foreach($list->otmain_many_otline as $ot) // foreach for $otmain_many_otline       
     {{$ot->purpose}} , &nbsp;
    @endforeach
 </td>
</tr>
@endforeach