Laravel foreach in sub foreach blade

时间:2017-02-03 05:49:02

标签: php laravel foreach laravel-5.2

这是我的表: t_hasil_temp |---|-------|----------|-------| |id | id_wi | hasil | nilai | |---|-------|----------|-------| |1 | 3 | 45 | 0,53 | |2 | 3 | 20,45,23 | 0,53 | |3 | 4 | 21,22 | 0,87 | |4 | 5 | 45,23 | 0,23 |

t_objek |---|-------|----| |id | name | ...| |---|-------|----| |20 | name1 | ...| |21 | name2 | ...| |23 | name3 | ...| |45 | name4 | ...|

t_hasil_temp.hasil => t_objek.id

我想从t_objek循环t_hasil_temp.hasil并使用相同的id_wi

示例id_wi => 3

将在刀片视图中显示: nilai => 0,53

第一个foreach: name4

第二个foreach: name1name4以及name3

我试试这样。但我只从id

获得第一个t_hasil_temp.hasil

我的控制器

$temps = DB::table('t_hasil_temp')
  ->where('id_wi', $idwisa)
  ->get();

  foreach ($temps as $value) {
    $stemp = DB::table('t_hasil_temp')
    ->where('id', $value->id)
    ->first();

    $temp = explode(",",$stemp->hasil);

    $tempStr = implode(',', $temp);

    $robjeks = DB::table('objek')->whereIn('id', $temp)->orderByRaw(DB::raw("field(id, $tempStr)"))->get();
  }

我的观点

@foreach($temps as $tem)
    <ul id="list">
      @foreach($robjeks as $robjek)
        @if(in_array($robjek->id,explode(',', $tem->hasil))) 
          <li class="list_item {{$robjek->kategori}}">
            .....
          </li>
        @endif
      @endforeach
    </ul>
@endforeach

我认为我的代码存在问题,但我不知道。我是无奈的。 请帮帮我!

感谢您的关注。

1 个答案:

答案 0 :(得分:0)

您正在覆盖数组中每个结果的$robjeks的变量值。

您可以尝试

$temps = DB::table('t_hasil_temp')
  ->where('id_wi', $idwisa)
  ->get();

  foreach ($temps as $value) {
    $stemp = DB::table('t_hasil_temp')
    ->where('id', $value->id)
    ->first();

    $temp = explode(",",$stemp->hasil);

    $tempStr = implode(',', $temp);

    $robjeks[] = DB::table('objek')->whereIn('id', $temp)->orderByRaw(DB::raw("field(id, $tempStr)"))->get();
  }

您应该查看

@foreach($temps as $tem)
    <ul id="list">
      @foreach($robjeks as $robjek)
        @if($tem->id == $robjek->id)
          <li class="list_item {{$robjek->kategori}}">
            .....
          </li>
        @endif
      @endforeach
    </ul>
@endforeach