Laravel 5 将本机查询从blade分离并转换为雄辩的laravel
问题是我不想查询刀片内部,因为这是个坏主意,我有两个表: “kriterias”表(id_kriteria,kriteria_name)Laravel 5 将本机查询从blade分离并转换为雄辩的laravel,laravel-5,laravel-blade,Laravel 5,Laravel Blade,问题是我不想查询刀片内部,因为这是个坏主意,我有两个表: “kriterias”表(id_kriteria,kriteria_name) “评估”表(id_食品、id_kriteria、等级) 这就是我的问题开始的地方,我希望在我的刀片视图中应用此代码: @for ($i=1;$i<=$jlhkriteria;$i++) <?php $evaluasi = mysqli_query($mysqli, "SELECT k.kriteria_nam
“评估”表(id_食品、id_kriteria、等级) 这就是我的问题开始的地方,我希望在我的刀片视图中应用此代码:
@for ($i=1;$i<=$jlhkriteria;$i++)
<?php $evaluasi = mysqli_query($mysqli, "SELECT k.kriteria_name,e.id_kriteria,e.grade FROM evaluasis e, kriterias k WHERE
e.id_food='$nis' AND e.id_kriteria='$i' AND e.id_kriteria=k.id_kriteria");
$hasil = mysqli_fetch_array($evaluasi, MYSQLI_ASSOC); ?>
<?php echo $hasil['kriteria_name']; ?>
<?php echo $hasil['grade']; ?>
<?php echo $i; ?>
@endfor
我总是有问题时,查询一些内部的循环刀片。我以前的尝试是在控制器中进行for循环,并在blade中对其进行foreach,对于$i值,我获得id\u kriteria值,但我想知道如何在控制器中查询它,同时在blade中获取$i值并回显“kriteria\u name”和“grade”以及“$i”
编辑1:添加模型和控制器 并且有它的模型:
Kriteria Model
public function evaluasi()
{
return $this->hasMany(Evaluasi::class, id_kriteria, id_kriteria);
}
Evaluasi Model
public function kriteria()
{
return $this->belongsTo(Kriteria::class, id_kriteria, id_kriteria);
}
控制器部分(不要担心“nis”值,因为我从请求中得到它是整数):
您的控制器将如下所示:
$kriteria = Kriteria::with('evaluasi')->get();
return view('rank', compact('kriteria'));
在你看来:
@foreach ($kriteria as $k)
{{ $k->kriteria_name }}
{{ $k->id }}
@foreach ($k->evaluasi as $e)
{{ $e->grade }}
{{ $e->id }}
@endforeach
@endforeach
试试这个,看看是否有帮助…好的,我想出来了。首先,我需要修复关系,使用新的食物表创建多对多关系,然后我将得到pivot表
//Kriteria Model
public function food()
{
return $this->belongstoMany(Food::class, "pivot_table", id_kriteria, id_food);
}
//Food Model
public function kriteria()
{
return $this->belongsToMany(Kriteria::class, "pivot_table", id_food, id_kriteria)->withPivot('grade');
}
控制器:
$nis = 1;
$evaluasis = Food::find($nis);
$hasils = $evaluasis->kriteria;
最后在视图中显示它:
@foreach($hasils as $hasil)
<tr>
<td>
{{ $hasil->kriteria_name }}
</td>
<td>
<input type=text name='grade{{ $hasil->id_kriteria }}' value='{{$hasil->pivot->grade }}'>
</td>
</tr>
@endforeach
@foreach($hasil作为$hasil)
{{$hasil->kriteria_name}
@endforeach
完成后,它工作了
您雄辩的通话的
dd($evaluasi)
结果是什么?我还没有检查,但我用Tinkers确认过,我应该在myqueryfunction之前包含$this->?那么我在blade中的for循环呢,我应该将foreach循环放在for循环中吗?例如,如果myQueryFunction()
作为私有函数在控制器中,那么是的。并且您只能使用foreach循环。它是一个公共函数,我应该将for循环放在哪里?laravel如何知道我想要选择evaluasis.id_kriteria=$I?如果在控制器或(最好)模型中进行查询,则不需要for循环。foreach将迭代先前加载的变量。
$nis = 1;
$evaluasis = Food::find($nis);
$hasils = $evaluasis->kriteria;
@foreach($hasils as $hasil)
<tr>
<td>
{{ $hasil->kriteria_name }}
</td>
<td>
<input type=text name='grade{{ $hasil->id_kriteria }}' value='{{$hasil->pivot->grade }}'>
</td>
</tr>
@endforeach