【问题标题】:Laravel foreach in sub foreach blade子 foreach 刀片中的 Laravel foreach
【发布时间】:2017-06-20 10:22:43
【问题描述】:

这是我的桌子: 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

我想用相同的id_wit_hasil_temp.hasil循环t_objek

示例id_wi => 3

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

第一个 foreach: name4

第二次foreach: name1name4name3

我正在尝试这样。但我从t_hasil_temp.hasil 得到了第一个id

我的控制器

$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

我认为我的代码有问题,但我不知道。我很无奈。 请帮帮我!

感谢关注。

【问题讨论】:

  • 你正在覆盖$temp = explode(",", $temp-&gt;hasil);(这里你也有一个拼写错误)。但是现在$temp 有一个用逗号爆炸的数组。不是您试图通过$tem-&gt;id 在模板中获取的数据库记录。所以改变变量名。
  • 抱歉,不知道该换哪一个?
  • 你能在刀片模板的循环第一行添加 dd($tem)
  • 我收到了{#318 ▼ +"id": 484 +"id_wi": "484" +"hasil": "26,34" +"nilai": "0.45416566848485" }
  • 好的。现在在第二个 foreach 中还检查 $robjek 它是否也是一个对象,您可以访问 ID ...因为如果 id 不匹配,那么它将不会打印任何内容。

标签: php laravel foreach laravel-5.2


【解决方案1】:

您正在覆盖 $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

【讨论】:

    猜你喜欢
    • 2018-04-04
    • 2021-10-19
    • 1970-01-01
    • 2015-12-15
    • 2017-11-13
    • 2021-01-27
    • 1970-01-01
    • 2022-09-22
    • 2016-06-29
    相关资源
    最近更新 更多