问题是如何将外键中的数据导入我的控制器并传递给Session flash消息视图。
AbsenController @存储
$this->validate($request, [
'siswa_id' => 'required',
'keterangan' => 'required',
]);
$alpaCount = Absen::where('siswa_id', '=', $request->siswa_id)
->where('keterangan', '=', 'Alpa')
->count();
if (Absen::where('siswa_id', '=', $request->siswa_id)
->whereRaw('DATE(created_at) = CURDATE()')
->exists()) {
return redirect()->back()->with('message', 'Data Telah Tersedia');
} elseif($alpaCount >= 3) {
$absen = new Absen;
$absen->siswa_id = $request->siswa_id;
$absen->keterangan = $request->keterangan;
$absen->save();
$nama = Siswa::where('id', '=', $request->siswa_id)->get();
Session::flash('warning', $nama->nama.' Sudah Lebih Dari 3 Kali
Alpa');
return redirect()->route('absen.index')
查看 $ nama = Siswa :: where('id','=',$ request-> siswa_id) - > get(); 即时尝试使用 $ request-> id 获取数据并获取 nama 字段,然后传递给 Session :: flash('warning',$ nama- > nama。'Sudah Lebih Dari 3 Kali Alpa'); return redirect() - > route('absen.index');
艾比森@ siswa
public function siswa()
{
return $this->belongsTo('App\Siswa');
}
Siswa @艾比森
public function absen()
{
return $this->hasMany('App\Absen');
}
也许你可以帮助我,谢谢
Siswa表
答案 0 :(得分:0)
find($request->id)
我假设$request->siswa_id
,因为我无法在代码中的任何位置找到$ request-> id
使用Constraining Eager Loads
尝试此操作 $nama = Absen::with(['siswa' => function ($query) use ($request) {
$query->where('id', $request->siswa_id);
}])->get();
Session::flash('warning', $nama->siswa->nama.' Sudah Lebih Dari 3
Kali Alpa');
编辑答案
根据您在问题中显示的表格,可以像这样完成
$namas = Absen::where('siswa',$request->siswa_id)->get(); //will return array because of absent as many siswa
foreach($namas as $nama) {
$siswa_name = $nama->siswa->nama;
}
答案 1 :(得分:0)
您可以使用Absen
加载siswa
,在过滤siswa_id
的where子句中,它绑定到$request->siswa_id
$nama = Absen::with(['siswa' => function ($query) use($request) {
$query->where('siswa_id', $request->siswa_id;);
}])->get();
另外,你可以懒得加载:
$name = Absen::find($request->id);
然后调用load
函数加载相关模型。
$name->load('siswa');
因为siswa是一个数组。您可以遍历它并找到所需的对象名称。或者您只需使用first()
函数获取第一个元素即可。 e.g。
$nama->siswa->first()->anyproperty;