将本机查询从 blade 分离并转换为 eloquent laravel
Separate and convert native query from blade to eloquent laravel
问题是我不想在 blade 内部查询,因为这是个坏主意,我有 2 个表:
"kriterias" table (id_kriteria, kriteria_name)
"evaluasis" table (id_food, id_kriteria, grade)
这就是我的问题开始的地方,我希望在我的 blade 视图中应用此代码:
@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
As far as I know to join select query above using eloquent I use this
:
$evaluasi = Kriteria::with(array('evaluasi' => function($query) use ($nis) {
$query ->where('id_food', $nis)
->where('id_kriteria',$i)//this $i value are get from for loop in blade
->select('id_kriteria', 'grade');
}))->firstOrFail();
在 blade 中查询 for 循环内的内容时,我总是遇到问题。我之前的尝试是在控制器中执行 for 循环并在 blade 中进行 foreach,对于 $i 值我得到 id_kriteria 值,但我想知道如何在获取 $i 值时在控制器中查询它在 blade 和 echo "kriteria_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" 值,因为我从请求中得到它是整数):
$jlhkriteria = Kriteria::count();
return view('rank', compact('nis', 'jlhkriteria));
你的控制器将是这样的:
$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
试试看是否有帮助...
好的,我明白了。首先,我需要修复关系,使用新食物 table 创建多对多关系,然后我将获得枢轴 table.
//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
and done, it works!!!
问题是我不想在 blade 内部查询,因为这是个坏主意,我有 2 个表:
"kriterias" table (id_kriteria, kriteria_name)
"evaluasis" table (id_food, id_kriteria, grade)
这就是我的问题开始的地方,我希望在我的 blade 视图中应用此代码:
@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
As far as I know to join select query above using eloquent I use this :
$evaluasi = Kriteria::with(array('evaluasi' => function($query) use ($nis) {
$query ->where('id_food', $nis)
->where('id_kriteria',$i)//this $i value are get from for loop in blade
->select('id_kriteria', 'grade');
}))->firstOrFail();
在 blade 中查询 for 循环内的内容时,我总是遇到问题。我之前的尝试是在控制器中执行 for 循环并在 blade 中进行 foreach,对于 $i 值我得到 id_kriteria 值,但我想知道如何在获取 $i 值时在控制器中查询它在 blade 和 echo "kriteria_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" 值,因为我从请求中得到它是整数):
$jlhkriteria = Kriteria::count();
return view('rank', compact('nis', 'jlhkriteria));
你的控制器将是这样的:
$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
试试看是否有帮助...
好的,我明白了。首先,我需要修复关系,使用新食物 table 创建多对多关系,然后我将获得枢轴 table.
//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
and done, it works!!!