这是我的表:
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:
name1
和name4
以及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
我认为我的代码存在问题,但我不知道。我是无奈的。 请帮帮我!
感谢您的关注。
答案 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