Laravel 5 将本机查询从blade分离并转换为雄辩的laravel

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

问题是我不想查询刀片内部,因为这是个坏主意,我有两个表:

“kriterias”表(id_kriteria,kriteria_name)
“评估”表(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